每天一个WordPress文件:wp-config.php

wp-config.php 是 WordPress 用来保存配置信息的地方,包含网站的基础配置详细信息(如数据库连接信息),它是 WordPress 最重要的文件之一,该文件位于 WordPress 文件目录的根目录中。

原始下载下来的 WordPress 安装包里面并不包含 wp-config.php 文件,WordPress 会通过安装步骤让你一步一步输入你网站的信息进行创建。当然也可以受到到 WordPress 目录下去创建,你可以使用 WordPress 默认提供的 wp-config-sample.php 进行修改创建。

数据库设置

首先是数据库的设置,目前 WordPress 只支持 MySQL 数据库,不知道以后 WordPress 会不会把数据库连接抽象成一个层,这样就可以支持更多的数据库。

不管如何,下面的设置就是分别需要输入你数据库的名字,连接 MySQL 数据库的用户名,密码和数据库的主机。

代码语言:javascript
复制
// ** MySQL 设置 ** //
define('DB_NAME', '数据库名');	// 数据库名
define('DB_USER', 'MySQL用户名');// 数据库用户名
define('DB_PASSWORD', '密码');	// 数据库密码
define('DB_HOST', 'localhost');	// 数据库地址

关于数据库主机名,90%都是 localhost,本机,如果你使用了远程数据库,那么这里输入你远程数据库地址。

如果你的数据库使用了其他端口(比如3307),那就需要去修改 DB_HOST 的值了:

代码语言:javascript
复制
define( 'DB_HOST', '127.0.0.1:3307' );

或者

代码语言:javascript
复制
define( 'DB_HOST', 'localhost:3307' );

需要制定特定的主机:

代码语言:javascript
复制
define( 'DB_HOST', 'mysql.example.com:3307' );

数据库字符集和排序方法

WordPress 2.2 版本开始,WordPress 支持设置数据库的字符集,一般来说,默认的字符集 utf8 (Unicode UTF-8) 是最佳选项,UTF-8 支持所有语言,所以一般来说将字符集定义为 utf-8 即可:

代码语言:javascript
复制
define( 'DB_CHARSET', 'utf8' );

WordPress 2.2 版本还支持设置数据字符的排序方法,默认该值设置为空即可,WordPress 会根据数据库字符集 DB_CHARSET 的定义,自动设置设置数据字符的排序方法:

代码语言:javascript
复制
define( 'DB_COLLATE', '' );

UTF-8 Unicode General collation:

代码语言:javascript
复制
define( 'DB_COLLATE', 'utf8_general_ci' );

表前缀

$table_prefix 用来定义数据库表的前缀,默认是 wp_,如果你想用别的名字就可以修改它,如果在一个数据库安装了不止一个 WordPress ,那么就要在这里给每个 WordPress 程序指定不同的表前缀:

代码语言:javascript
复制
$table_prefix = 'r235_'; // 只能数字,字符和下划线

自定义 user 和 usermeta 表

如果多个系统需要对接 WordPress 需要用到其他系统的用户表,那么可以通过下面两个字段来自定义:

代码语言:javascript
复制
define( 'CUSTOM_USER_TABLE', $table_prefix.'my_users' );
define( 'CUSTOM_USER_META_TABLE', $table_prefix.'my_usermeta' );

Security Keys

WordPress 2.6 版本新增了3个 security keys:AUTH_KEY, SECURE_AUTH_KEY 和 LOGGED_IN_KEY,用于确保存储在用户 cookie 中的信息更加安全,WordPress 2.7 又增加了第四个 key:NONCE_KEY。对应每个 Key 的也增加了相应的盐值: AUTH_SALT, SECURE_AUTH_SALT, LOGGED_IN_SALT 和 NONCE_SALT。

WordPress 官方也提供了一个 在线生成器 来生成它们:

代码语言:javascript
复制
define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

WP_SITEURL 和 WP_HOME

这两个常量也是 WordPress 2.2 版本增加的,即可以在 wp-config.php 文件中设置你的站点的 “home” 和 “siteurl” 的值。如下:

代码语言:javascript
复制
define('WP_SITEURL', 'http://blog.wpjam.com/');
define('WP_HOME', 'http://blog.wpjam.com');

这里分别设置你博客首页和 WordPress 程序路径,注意末尾的'/'不需要,如本站都是 http://blog.wpjam.com。当你把你博客从搬家到另外一个地方并且更改了域名,你就不需要在数据库中去修改 URL,直接就可以在 wp-config.php 里面设置。

另外活用下这个功能可以让你的 WordPress 动态域名支持:

代码语言:javascript
复制
define( 'WP_SITEURL', 'http://' . $_SERVER['SERVER_NAME'] . '/path/to/wordpress' );
define( 'WP_HOME', 'http://' . $_SERVER['SERVER_NAME'] . '/path/to/wordpress' );

wp-content / plugins / themes / uploads 目录

WordPress 2.6 版本开始,我们可以把 wp-content 目录(包含 themes, plugins 和 uploads )迁移到任意的位置,甚至 WordPress 程序外面。

代码语言:javascript
复制
define( 'WP_CONTENT_DIR', dirname(__FILE__) . '/blog/wp-content' );
define( 'WP_CONTENT_URL', 'http://example/blog/wp-content' );

迁移 plugins 目录:

代码语言:javascript
复制
define( 'WP_PLUGIN_DIR', dirname(__FILE__) . '/blog/wp-content/plugins' );
define( 'WP_PLUGIN_URL', 'http://example/blog/wp-content/plugins' );

但是 themes 目录不可以迁移,因为 themes 目录是根据 wp-content 目录写死的:

代码语言:javascript
复制
$theme_root = WP_CONTENT_DIR . '/themes';

但是可以通过 register_theme_directory 注册额外的主题目录。

迁移 uploads 目录:

代码语言:javascript
复制
define( 'UPLOADS', 'wp-content/media' );

这个路径不能绝对路径,必须相对于 ABSPATH。

自动保存

WordPress 会在你撰写日志的时候,使用 AJAX 自动保存日志修订到数据库中。这个自动保存的间隔是可以设置的,默认是 60 秒

代码语言:javascript
复制
define( 'AUTOSAVE_INTERVAL', 160 ); // Seconds

日志修订

WordPress 默认会把日志修订写到数据库里面,如果你觉得这个功能没鸟用,可以屏蔽它:

代码语言:javascript
复制
define( 'WP_POST_REVISIONS', false );

也可以设置在数据库日志修订的最大数:

代码语言:javascript
复制
define( 'WP_POST_REVISIONS', 3 );

Debug

WordPress Version 2.3.1 增加了这个选项,并且通过 WP_DEBUG_DISPLAY 和 WP_DEBUG_LOG 用于控制 PHP 错误和警告的显示和写入 log。默认值是:false。

代码语言:javascript
复制
define( 'WP_DEBUG', true );		// 开启 debug 模式
define( 'WP_DEBUG_LOG', false );	// 把错误log写到 wp-content/debug.log 中
define( 'WP_DEBUG_DISPLAY', true );	// 直接在页面上显示错误 log

如果想去 debug 默认的 JS 和 CSS 文件,可以在 wp-config.php 文件中添加下面的代码:

代码语言:javascript
复制
define( 'SCRIPT_DEBUG', true );

这样,wp-includes/js, wp-includes/css, wp-admin/js, 和 wp-admin/css 这些文件夹中的未压缩版本的 JS 和 CSS 文件就会被加载,而不是去加载 .min.css 和 .min.js 版本。

另外,在默认情况下,WordPress 后台的所有的 JavaScript 的文件都被连接到一个 URL 中,如果 JavaScript 发生错误,可以把这个功能屏蔽了,检查一下:

代码语言:javascript
复制
define( 'CONCATENATE_SCRIPTS', false );

如果要查询当前页面进行多少次 SQL 查询,可以通过 SAVEQUERIES 选项,把所有 SQL 都保存下来:

代码语言:javascript
复制
define( 'SAVEQUERIES', true );

然后在页面底部输出:

代码语言:javascript
复制
<?php
if ( current_user_can( 'administrator' ) ) {
    global $wpdb;
    echo "

<pre>";
print_r( $wpdb->queries );
echo "</pre>
";
}
?>

PHP 内存设置

WordPress 2.5 版本带来了一个新选项 WP_MEMORY_LIMIT,让用户自己设置 PHP 能够消耗最大内存的大小。当你收到 "Allowed memory size of xxxxxx bytes exhausted" 这种错误信息的时候,这个设定就非常有帮助。

WordPress 默认设置是:分配给 PHP 40M(单站点),64M(多站点)。另外需要注意的是,如果你的服务器不支持设置 PHP memory limit 的话,该选项任何设置都是无效的,并且大部分主机只允许设置 8M:

代码语言:javascript
复制
define( 'WP_MEMORY_LIMIT', '64M' );

WordPress 后台任何需要更大的内存,所以在后台,可以通过定义 WP_MAX_MEMORY_LIMIT ,来进一步提升 PHP 内存:

代码语言:javascript
复制
define( 'WP_MAX_MEMORY_LIMIT', '256M' );

语言设置

WordPress 4.0 之后,直接在 WordPress 后台设置语言,所以无需再 wp-config.php 中设置了。

缓存

如果将 WP_CACHE 设置为: true,WordPress 就会加载脚本 wp-content/advanced-cache.php

代码语言:javascript
复制
define( 'WP_CACHE', true );

定时作业

如果 WordPress 的定时作业没有跑,你可以定义一下下面的选项:

代码语言:javascript
复制
define( 'ALTERNATE_WP_CRON', true );

屏蔽定时作业:

代码语言:javascript
复制
define( 'DISABLE_WP_CRON', true );

设置定时作业最长运行时间:

代码语言:javascript
复制
define( 'WP_CRON_LOCK_TIMEOUT', 60 );

清空回收站

WordPress 2.9 新增了一个选项,让你设置清空回收站的时间,默认是30天:

代码语言:javascript
复制
define( 'EMPTY_TRASH_DAYS', 30 ); // 30 days

设置为 0 则关闭回收站功能,意思删除就是直接删除了。

代码语言:javascript
复制
define( 'EMPTY_TRASH_DAYS', 0 );

自动数据库优化

WordPress 2.9 新增了自动数据库优化功能:

代码语言:javascript
复制
define( 'WP_ALLOW_REPAIR', true );

自动优化的脚本在:/wp-admin/maint/repair.php

禁止更新全局表

每次 WordPress 更新,WordPress 可能会对全局表做一些更新,如果你自己已经对这些表做了修改,那么你不想 WordPress 更新的时候对这些表进行 ALTER,DELETE 或者 UPDATE 等操作,那么禁止更新全局表:

代码语言:javascript
复制
define( 'DO_NOT_UPGRADE_GLOBAL_TABLES', true );

禁止插件和主题修改

WordPress 后台是可以直接修改主题和插件的,有些用户不小心修改了,可能会造成网站都打不开,所以为了这种误操作,可以屏蔽插件和主题编辑器:

代码语言:javascript
复制
define( 'DISALLOW_FILE_EDIT', true );

WordPress 后台可以直接更新插件或者主题,如果你的主题和插件已经自己做了一些定制化修改,不需要在更新了,使用下面选项屏蔽更新:

代码语言:javascript
复制
define( 'DISALLOW_FILE_MODS', true );

强制后台和登录界面 HTTP 加密

代码语言:javascript
复制
define( 'FORCE_SSL_ADMIN', true );

屏蔽外部 HTTP 请求

为了加强 WordPress 安全性,可以屏蔽所有外部的 HTTP 请求:

代码语言:javascript
复制
define( 'WP_HTTP_BLOCK_EXTERNAL', true );

当然可以设置一些域名下的请求许可:

代码语言:javascript
复制
define( 'WP_ACCESSIBLE_HOSTS', 'api.wordpress.org,*.github.com' );

屏蔽 WordPress 更新

屏蔽 WordPress 自动更新:

代码语言:javascript
复制
define( 'AUTOMATIC_UPDATER_DISABLED', true );

屏蔽所有 WordPress 更新:

代码语言:javascript
复制
define( 'WP_AUTO_UPDATE_CORE', false );

启用所有 WordPress 更新:

代码语言:javascript
复制
define( 'WP_AUTO_UPDATE_CORE', true );

只启用小版本更新(默认):

代码语言:javascript
复制
define( 'WP_AUTO_UPDATE_CORE', 'minor' );

清理图片缩略图

默认情况下,WordPress 在上传图片的时候,会根据图片格式创建一组图片,当你更改设置的时候,这些图片不会被删除,如果你不想那么多图片的时候:

代码语言:javascript
复制
define( 'IMAGE_EDIT_OVERWRITE', true );

屏蔽编辑未过滤的HTML代码

默认情况下,单站点下的管理员和编辑角色的用户是可以发布未过滤的HTML代码到日志标题,内容和留言中。多站点只有超级管理员才行(super admin),所有其他用户都认为不可信的。

如果要屏蔽所有的用户,包括管理员,超级管理员:

代码语言:javascript
复制
define( 'DISALLOW_UNFILTERED_HTML', true );