在WordPress网络上使用相同的目录存储所有上传的图像

时间:2012-12-24 作者:Ollie

我目前使用Wordpress网络来运行许多网站,这些网站都使用相同的模板、插件和图像。由于帖子出现在多个站点上,因此只将图像上传到一个位置(并且有一个图像副本)是有意义的,而不是多个。

我是否可以通过创建自定义重写来实现这一点?还是有更好的方法来实现这一点?

Background information

我使用WPThree Broadcast在多个站点上“广播”图像,因此也将图像复制到各自的图像库中。我不想让服务器被同一个图像的十个副本弄得乱七八糟,所以我要检查图像是否已经存在于网站的wp_posts 表,如果不复制postpost_meta 将数据导入该站点的表中。

但是,我不希望将实际图像复制到新的上载文件夹中,因为默认WP配置为这样做(例如,复制到/wp-content/blogs.dir/2/files/), 因此,我希望将所有图像上载到/wp-content/uploads/, 标准WP安装的默认上载文件夹。

2 个回复
最合适的回答,由SO网友:Pontus Abrahamsson 整理而成

您可以非常简单地添加一些操作来存档它。

function wpse_16722_main_uploads() {
    switch_to_blog(1);
}
add_action(\'load-media-new.php\', \'wpse_16722_main_uploads\');
add_action(\'load-media-upload.php\', \'wpse_16722_main_uploads\');
add_action(\'load-media.php\', \'wpse_16722_main_uploads\');
add_action(\'load-upload.php\', \'wpse_16722_main_uploads\');
add_action(\'admin_init\', \'wpse_16722_main_uploads\');
这将在的帮助下,将当前的子博客更改为用户主站点switch_to_blog 当然,您希望主面位于id 1旁边。

您还可以添加一个函数,将上载文件夹重写为仅上载/不上载子文件夹:

function wpse_16722_upload_dir( $args ) {
    $newdir = \'/\';

    $args[\'path\']    = str_replace( $args[\'subdir\'], \'\', $args[\'path\'] ); //remove default subdir
    $args[\'url\']     = str_replace( $args[\'subdir\'], \'\', $args[\'url\'] );      
    $args[\'subdir\']  = $newdir;
    $args[\'path\']   .= $newdir; 
    $args[\'url\']    .= $newdir; 

    return $args;
}
add_filter( \'upload_dir\', \'wpse_16722_upload_dir\' );

SO网友:James H.

在岗位上"How to Change the Default Media Upload Location in WordPress 3.5" 编辑人员展示了如何在wp-config.php :

define( \'UPLOADS\', \'wp-content/\'.\'files\' );

结束