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

Wordpress 3具有相同媒体库的多站点,wordpress,image,media,Wordpress,Image,Media,我创建了一个有5个子博客的Worpress 3多站点。 是否可以在此博客中共享相同的媒体库 例如,我在wp_1_选项和wp_2_选项中更改了upload_路径,也在“超级管理员”菜单中更改了我的后端,但没有效果 文件上载到wp_contents/blogs.dir/1-2-3/files,选项无效 有什么想法吗?谢谢 一种方法是挂接所有媒体管理文件的加载事件,并使用切换到blog(1)切换到主blog 这意味着在任何博客管理员中,媒体库都会像在主博客上一样运行 请注意,一些注意事项包括: 所有

我创建了一个有5个子博客的Worpress 3多站点。 是否可以在此博客中共享相同的媒体库

例如,我在
wp_1_选项
wp_2_选项
中更改了
upload_路径
,也在“超级管理员”菜单中更改了我的后端,但没有效果

文件上载到
wp_contents/blogs.dir/1-2-3/files
,选项无效


有什么想法吗?谢谢

一种方法是挂接所有媒体管理文件的加载事件,并使用
切换到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');

在我对这个主题的搜索中,有几篇文章都指向了这个主题,所以我想我会分享一个想法,可能有人想开发一个合适的插件来解决这个问题

  • 使用和
    update\u site\u option()
    存储全局插件选项
  • 通过挂钩添加一个选项,选择媒体上传是否应在网络范围内共享,并让插件跟踪哪些媒体文件及其所在位置
  • 同样,使用钩子,让共享项目显示在每个博客的媒体库中,并可能添加一个指示器,显示文件是网络共享
我花了几个小时玩管理员挂钩和过滤器,这可以通过它们来实现,尽管我还不知道如何将其与所有媒体库功能完全集成

可以作为有价值的参考,因为他们通过挂钩和过滤器为媒体库使用了一些自定义功能


我真希望我现在有空余时间来做这件事,因为我会尽我最大的努力。我希望这对其他人有所帮助。

我找到了一个可能的解决方案,它在WP3.7.1中对我有效(我还没有在早期版本中测试过它)

创建一个过滤器,该过滤器覆盖默认上载目录:

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 includes/functions.php中找到函数
WP\u upload\u dir()
,并找到函数调用:
$uploads=apply\u filters('upload\u dir')…
如果出现这种情况,上述解决方案应该有效

希望,这有助于

此外,我花了将近两天的时间,通过在相应的数据库表中生成必要的post和POSTETA条目,用操作挂钩“add_attachment”和“delete_attachment”在每个博客中复制/删除上传的媒体。通过此解决方案,您可以在任何博客中添加/删除媒体,也就是说ible已从所有博客媒体库中删除。如果您感兴趣,我可以共享它


“干杯”

看起来是目前唯一的解决方案。感谢您提供的信息,我刚刚试用了wordpress 3.6,效果非常好。谢谢您,它救了我一天!在“特色图片”的情况下,它不使用共享媒体。有什么解决方法吗?