更改WordPress上载路径和URL

时间:2016-04-03 作者:Mat

在新安装时,我想将上载文件夹移动到子域(应该可以加快下载速度)。我的子域链接到一个名为static的文件夹。所以我有:

现在我需要告诉WordPress上传文件夹的位置并定义其URL。这个codex 说我应该编辑wp config来定义相对于ABSPAHT的上传。但如果我把define( \'UPLOADS\', \'../static\' ); 当然,页面中的URL如下//mydomain.tld/wp/../static/image.jpg

我环顾四周,找到了许多不同的答案(过滤器、DB编辑等),其中一些不再正确(因为媒体设置页面不再允许更改上载文件夹),还有一些明显错误。。。我想用正确的方法来做。

我去了wp管理员/选项。php页面和设置upload_path = ../staticupload_url_path = http://static.mydomain.tld 这似乎奏效了。

But is that how it\'s supposed to be done? 如果开发人员已经从“媒体设置”页面中删除了这些选项,该功能以后是否会被完全删除?

3 个回复
最合适的回答,由SO网友:kovshenin 整理而成

我去了wp管理员/选项。php页面和设置。。。但这就是应该做的吗?

没有。您不应该更改WordPress核心文件中的任何内容,因为您所做的所有更改都将在下次更新期间丢失。您应该改用操作和筛选器:

add_filter( \'pre_option_upload_path\', function( $upload_path ) {
    return \'/path/to/static\';
});

add_filter( \'pre_option_upload_url_path\', function( $upload_url_path ) {
    return \'http://static.example.org\';
});

SO网友:Kelly

我在映射子域媒体时遇到了类似的问题。Asked & Answered here.<简而言之,添加到函数。php以下内容:

update_option(\'upload_url_path\', \'/wp-content/uploads\');

SO网友:biziclop

如果出于任何原因,您不想在数据库或functions.php, 您仍然可以在wp-config.php 这样(在调用任何WordPress核心文件之前):

$GLOBALS[\'wp_filter\'][\'pre_option_upload_path\'][10][] = array(
  \'function\' => function( $upload_path ){
    return \'/path/to/static\';
  },
  \'accepted_args\' => 1,
);

$GLOBALS[\'wp_filter\'][\'pre_option_upload_url_path\'][10][] = array(
  \'function\' => function( $upload_url_path ){
    return \'http://static.example.org\';
  },
  \'accepted_args\' => 1,
);
WP_Hook::build_preinitialized_hooks 将这些数组项正确更新为实际使用的内部格式。