代码之家  ›  专栏  ›  技术社区  ›  choise

具有相同媒体库的Wordpress 3多站点

  •  3
  • choise  · 技术社区  · 15 年前

    是否可以在这个博客中共享同一个媒体库?

    我变了 upload_path 在里面 wp_1_options wp_2_options 例如,也在我的后端在“超级管理员”菜单,但它没有任何效果。

    文件上载到 wp_contents/blogs.dir/1-2-3/files 而且这些选项没有效果。

    3 回复  |  直到 15 年前
        1
  •  4
  •   TheDeadMedic    15 年前

    一种方法是挂接所有媒体管理文件的加载事件,并使用 switch_to_blog(1) .

    这意味着在任何博客管理员中,媒体库都会像在主博客上一样运行。

    • 所有博客的媒体库都存储在主博客数据库表中。
    • 你呢 可以 在主博客管理员之外的帖子中插入媒体时遇到问题
    • 你呢 在主博客管理员之外的帖子中插入图库时遇到问题
    • 用户权限 是假阳性还是假阴性

    我最好的建议是使用下面的代码示例,并与blog管理员进行良好的交流,以不同的用户身份登录,使用不同的角色,以及 看看会发生什么 .

    function use_main_blog_library()
    {
        switch_to_blog(1);
    }
    add_action('load-media-new.php', 'use_main_blog_library');
    add_action('load-media-upload.php', 'use_main_blog_library');
    add_action('load-media.php', 'use_main_blog_library');
    add_action('load-upload.php', 'use_main_blog_library');
    
        2
  •  1
  •   Amereservant    13 年前

    在我对这个主题的搜索中,有好几篇文章都指向了这个主题,所以我想我应该和大家分享一个想法,也许可以帮助那些想开发一个合适的插件来解决这个问题的人。。。

    • get_site_option() update_site_option()
    • 同样,使用钩子,让共享的项目显示在每个博客的媒体库中,也许还可以添加一个指示符,显示文件是网络共享。

    我花了几个小时玩管理员钩子和过滤器,这可以通过它们来完成,尽管我不知道如何将它与所有媒体库功能完全集成。

    Shiba Media Library Plugin 可以作为一个有价值的参考,因为他们已经通过钩子和过滤器为媒体库使用了一些自定义功能。

    我真的希望我现在有空来做这件事,因为我会尽我最大的努力。我希望这能帮助别人。

        3
  •  1
  •   Battman    11 年前

    add_filter('upload_dir', 'ms_global_upload_dir');
    
    function ms_global_upload_dir($uploads)
    {
        $ms_dir = '/sites/' . get_current_blog_id();
    
        $uploads['path']    = str_replace($ms_dir, "", $uploads['path']);
        $uploads['url']     = str_replace($ms_dir, "", $uploads['url']);
        $uploads['basedir'] = str_replace($ms_dir, "", $uploads['basedir']);
        $uploads['baseurl'] = str_replace($ms_dir, "", $uploads['baseurl']);
    
        return $uploads;
    }
    

    重要提示:在“站点设置”中,“上载Url路径”设置应为空,或者如果需要自定义,请通过转储 $uploads

    要检查您的WP版本是否支持此方法,请找到函数 wp_upload_dir() 在wp includes/functions.php文件中,查找函数调用: $uploads = apply_filters( 'upload_dir' ...

    此外,我花了将近两天的时间,通过在相应的数据库表中生成必要的post和postemta条目,用action hook“add\u attachment”和“delete\u attachment”来创建一个复制/删除每个博客中上传的媒体的解决方案。使用此功能,您可以添加/删除任何博客中的媒体,这些媒体将在所有博客媒体库中可见或从中删除。如果你有兴趣,我可以和你分享。。。