• 不断学习才有回报,学无止境!

移动或重命名wordpress的wp-content目录

wordpress学习 箭翎 2426次浏览 0个评论 扫描二维码

wordpress中,wp-content是默认的用户内容目录。所有的插件和主题也都分别上传到wp-content/plugins,wp-content/theme目录。也许,你不知道。Wordpress是允许用户把wp-content随便放置,移动,或重命名为任意你想要的目录名!为Wordpress设置内容目录和插件目录,编辑wp-config.php文件。把以下的代码插入到文件中,以下的4个常量是来重定义wordpress的内容和插件路径。

/** 设置wp-content目录路径 **/
define(‘WP_CONTENT_DIR’, ‘/path/to/custom/wp-content’);
define(‘WP_CONTENT_URL’, ‘url/to/custom/wp-content’);

/** 设置插件目录路径 **/

define( ‘WP_PLUGIN_DIR’, ‘/path/to/custom/plugins’ );
define( ‘WP_PLUGIN_URL’, ‘url/to/custom/plugins’ );

例如:

define( ‘WP_CONTENT_DIR’, ‘/home/blog/public_html/user_content’ );
define( ‘WP_CONTENT_URL’, ‘http://www.baidu.com/user_content’ );

define( ‘WP_PLUGIN_DIR’, ‘/home/blog/public_html/plugins’ );
define( ‘WP_PLUGIN_URL’, ‘http://www.baidu.com/plugins’ );


说明:常量WP_CONTENT_DIR和WP_PLUGIN_DIR是用来指定内容和插件的系统路径,也就意味你可以不再用wp-content如此通用的目录名了。这个目录也并非可以乱指定,必须要web服务器能够访问到的位置才可以,所以理论上的位置必须包含在网站根目录或者子目录里面。

利用php的全局变量$_SERVER[‘DOCUMENT_ROOT’]和$_SERVER[‘SERVER_NAME’]来构造一个相对于根目录的路径。

例如:


define( ‘WP_CONTENT_DIR’, $_SERVER[‘DOCUMENT_ROOT’] . ‘/user_content’ );
define( ‘WP_CONTENT_URL’, $_SERVER[‘SERVER_NAME’] . ‘/user_content’ );

常量WP_CONTENT_URL和WP_PLUGIN_URL为定制的目录(不带“/”)指定一个基本的URL,以便在内容和插件目录都可以正常访问。

小提示

完全移除wp-content目录是可以的。你只用指定内容目录为网站的根目录即可。如:


define( ‘WP_CONTENT_DIR’, ‘/home/blog/’ );
define( ‘WP_CONTENT_URL’, ‘http://www.baidu.com/’ );

define( ‘WP_PLUGIN_DIR’, ‘/home/blog/plugins’ );
define( ‘WP_PLUGIN_URL’, ‘http://www.baidu.com/plugins’ );


在这种情况下,所有的主题,插件和上传目录都会直接暴露在根域下。

通过

WP_PLUGIN_DIR
WP_PLUGIN_URL
,用户可以更改插件目录名。如用一个“p”或“addons”。由于插件目录可以配置到内容以外的目录,所以你就可以把它放到内容以外的目录或仍然放在内容目录。但一旦改变了wp-content目录,再把插件目录指定到wp-content目录也就没有什么意义了。如果你想继续保持wordpress目录结构的话,插件目录也就应该放在内容目录中。

更改了内容目录后,用户或许要更改wordpress的上传目录。以避免一些路径问题。关于这部分内容,请查看“wordpress中如何更改上传目录”。 如果你已经在网站中更改了wp-content目录的路径和名称。移动现在的主题、插件和上传目录(如果后两者名称没有改变)到适当的路径以确保Wordpress程序能够正常的工作也就变得异常重要了。另外,所有指向图片、视频、媒体和其他文件的地址都应被更正到一个正确的路径。这些变化并不只限于文章和页面中,而且我们可以用主题或插件的选项来保存它。

WordPress并没有直接提供重命名或更改主题文件位置的方法。然后,Wordpress提供了一个注册主题目录的函数register_theme_directory(),允许用户注册目录来放置主题文件,也就是额外的主题文件夹。 为了注册一个额外的主题目录,创建一个名为“扩展主题目录”的插件。然后把它上传到插件文件夹并激活。

代码如下:

<?php
/*
Plugin Name: 扩展主题目录
Plugin URI: www.baidu.com/
Description: 重新注册一个目录来放置主题
Version: 1
Author: lyblog
Author URI: www.baidu.com/
*/
 
register_theme_directory('/path/to/themes/directory');
?>

记得把以上的目录替换成一个指向主题的系统目录。或者是一个包含WP_CONTENT_DIR或WP_PLUGIN_DIR的文件夹。 如果你添加的主题目录是要放在内容目录中的话,你完全可以利用常量的连接来实现相对目录。

便如:

register_theme_directory(WP_CONTENT_DIR . ‘/themes’);

最后最重要的是,当wp-content文件夹自定义之后,一些主题或插件或许不能正确的识别。因此尽量不要自定义目录,以免网站挂掉。这些问题可能是由于开发者没有按照Wordpress内置的函数来获取目录。 对于这类问题,尽量使用apache的URL重写模块(或者其它类型服务器的类似方法)来重定向目录。这就应该重写所有指向wp-content目录到一个新的位置。例如,你可以在.htaccess文件中加入如下代码,并重启apache服务器:

RewriteRule (.*)(wp-content)(.*) $1content$3 [NC,R,L]

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/wp-content(/*)
RewriteRule ^wp-content/(.*)$ /content/$1 [L, NC]

在以上的救命中,所有到”/wp-content”的请求都重定向到”/content”目录。以上的URL重写的条件和规则只是一个例子,可能在你的服务器环境中并不适用。你应该根据你的服务器来进行配置。如果你的主题和插件都是使用路径来调用php文件的话,重写URL也就不起作用了。


箭翎 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明移动或重命名wordpress的wp-content目录
喜欢 (10)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址