wp-config.php
是 WordPress 用来保存配置信息的地方,包含网站的基础配置详细信息(如数据库连接信息),它是 WordPress 最重要的文件之一,该文件位于 WordPress 文件目录的根目录中。
原始下载下来的 WordPress 安装包里面并不包含 wp-config.php
文件,WordPress 会通过安装步骤让你一步一步输入你网站的信息进行创建。当然也可以受到到 WordPress 目录下去创建,你可以使用 WordPress 默认提供的 wp-config-sample.php
进行修改创建。
数据库设置
首先是数据库的设置,目前 WordPress 只支持 MySQL 数据库,不知道以后 WordPress 会不会把数据库连接抽象成一个层,这样就可以支持更多的数据库。
不管如何,下面的设置就是分别需要输入你数据库的名字,连接 MySQL 数据库的用户名,密码和数据库的主机。
// ** MySQL 设置 ** //
define('DB_NAME', '数据库名'); // 数据库名
define('DB_USER', 'MySQL用户名');// 数据库用户名
define('DB_PASSWORD', '密码'); // 数据库密码
define('DB_HOST', 'localhost'); // 数据库地址
关于数据库主机名,90%都是 localhost,本机,如果你使用了远程数据库,那么这里输入你远程数据库地址。
如果你的数据库使用了其他端口(比如3307),那就需要去修改 DB_HOST 的值了:
define( 'DB_HOST', '127.0.0.1:3307' );
或者
define( 'DB_HOST', 'localhost:3307' );
需要制定特定的主机:
define( 'DB_HOST', 'mysql.example.com:3307' );
数据库字符集和排序方法
WordPress 2.2 版本开始,WordPress 支持设置数据库的字符集,一般来说,默认的字符集 utf8 (Unicode UTF-8) 是最佳选项,UTF-8 支持所有语言,所以一般来说将字符集定义为 utf-8 即可:
define( 'DB_CHARSET', 'utf8' );
WordPress 2.2 版本还支持设置数据字符的排序方法,默认该值设置为空即可,WordPress 会根据数据库字符集 DB_CHARSET 的定义,自动设置设置数据字符的排序方法:
define( 'DB_COLLATE', '' );
UTF-8 Unicode General collation:
define( 'DB_COLLATE', 'utf8_general_ci' );
表前缀
$table_prefix
用来定义数据库表的前缀,默认是 wp_
,如果你想用别的名字就可以修改它,如果在一个数据库安装了不止一个 WordPress ,那么就要在这里给每个 WordPress 程序指定不同的表前缀:
$table_prefix = 'r235_'; // 只能数字,字符和下划线
自定义 user 和 usermeta 表
如果多个系统需要对接 WordPress 需要用到其他系统的用户表,那么可以通过下面两个字段来自定义:
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 官方也提供了一个 在线生成器 来生成它们:
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” 的值。如下:
define('WP_SITEURL', 'http://blog.wpjam.com/');
define('WP_HOME', 'http://blog.wpjam.com');
这里分别设置你博客首页和 WordPress 程序路径,注意末尾的'/'不需要,如本站都是 http://blog.wpjam.com。当你把你博客从搬家到另外一个地方并且更改了域名,你就不需要在数据库中去修改 URL,直接就可以在 wp-config.php 里面设置。
另外活用下这个功能可以让你的 WordPress 动态域名支持:
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 程序外面。
define( 'WP_CONTENT_DIR', dirname(__FILE__) . '/blog/wp-content' );
define( 'WP_CONTENT_URL', 'http://example/blog/wp-content' );
迁移 plugins 目录:
define( 'WP_PLUGIN_DIR', dirname(__FILE__) . '/blog/wp-content/plugins' );
define( 'WP_PLUGIN_URL', 'http://example/blog/wp-content/plugins' );
但是 themes 目录不可以迁移,因为 themes 目录是根据 wp-content 目录写死的:
$theme_root = WP_CONTENT_DIR . '/themes';
但是可以通过 register_theme_directory 注册额外的主题目录。
迁移 uploads 目录:
define( 'UPLOADS', 'wp-content/media' );
这个路径不能绝对路径,必须相对于 ABSPATH。
自动保存
WordPress 会在你撰写日志的时候,使用 AJAX 自动保存日志修订到数据库中。这个自动保存的间隔是可以设置的,默认是 60 秒
define( 'AUTOSAVE_INTERVAL', 160 ); // Seconds
日志修订
WordPress 默认会把日志修订写到数据库里面,如果你觉得这个功能没鸟用,可以屏蔽它:
define( 'WP_POST_REVISIONS', false );
也可以设置在数据库日志修订的最大数:
define( 'WP_POST_REVISIONS', 3 );
Debug
WordPress Version 2.3.1 增加了这个选项,并且通过 WP_DEBUG_DISPLAY 和 WP_DEBUG_LOG 用于控制 PHP 错误和警告的显示和写入 log。默认值是:false。
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
文件中添加下面的代码:
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 发生错误,可以把这个功能屏蔽了,检查一下:
define( 'CONCATENATE_SCRIPTS', false );
如果要查询当前页面进行多少次 SQL 查询,可以通过 SAVEQUERIES 选项,把所有 SQL 都保存下来:
define( 'SAVEQUERIES', true );
然后在页面底部输出:
<?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:
define( 'WP_MEMORY_LIMIT', '64M' );
WordPress 后台任何需要更大的内存,所以在后台,可以通过定义 WP_MAX_MEMORY_LIMIT ,来进一步提升 PHP 内存:
define( 'WP_MAX_MEMORY_LIMIT', '256M' );
语言设置
WordPress 4.0 之后,直接在 WordPress 后台设置语言,所以无需再 wp-config.php 中设置了。
缓存
如果将 WP_CACHE 设置为: true,WordPress 就会加载脚本 wp-content/advanced-cache.php
。
define( 'WP_CACHE', true );
定时作业
如果 WordPress 的定时作业没有跑,你可以定义一下下面的选项:
define( 'ALTERNATE_WP_CRON', true );
屏蔽定时作业:
define( 'DISABLE_WP_CRON', true );
设置定时作业最长运行时间:
define( 'WP_CRON_LOCK_TIMEOUT', 60 );
清空回收站
WordPress 2.9 新增了一个选项,让你设置清空回收站的时间,默认是30天:
define( 'EMPTY_TRASH_DAYS', 30 ); // 30 days
设置为 0 则关闭回收站功能,意思删除就是直接删除了。
define( 'EMPTY_TRASH_DAYS', 0 );
自动数据库优化
WordPress 2.9 新增了自动数据库优化功能:
define( 'WP_ALLOW_REPAIR', true );
自动优化的脚本在:/wp-admin/maint/repair.php
禁止更新全局表
每次 WordPress 更新,WordPress 可能会对全局表做一些更新,如果你自己已经对这些表做了修改,那么你不想 WordPress 更新的时候对这些表进行 ALTER,DELETE 或者 UPDATE 等操作,那么禁止更新全局表:
define( 'DO_NOT_UPGRADE_GLOBAL_TABLES', true );
禁止插件和主题修改
WordPress 后台是可以直接修改主题和插件的,有些用户不小心修改了,可能会造成网站都打不开,所以为了这种误操作,可以屏蔽插件和主题编辑器:
define( 'DISALLOW_FILE_EDIT', true );
WordPress 后台可以直接更新插件或者主题,如果你的主题和插件已经自己做了一些定制化修改,不需要在更新了,使用下面选项屏蔽更新:
define( 'DISALLOW_FILE_MODS', true );
强制后台和登录界面 HTTP 加密
define( 'FORCE_SSL_ADMIN', true );
屏蔽外部 HTTP 请求
为了加强 WordPress 安全性,可以屏蔽所有外部的 HTTP 请求:
define( 'WP_HTTP_BLOCK_EXTERNAL', true );
当然可以设置一些域名下的请求许可:
define( 'WP_ACCESSIBLE_HOSTS', 'api.wordpress.org,*.github.com' );
屏蔽 WordPress 更新
屏蔽 WordPress 自动更新:
define( 'AUTOMATIC_UPDATER_DISABLED', true );
屏蔽所有 WordPress 更新:
define( 'WP_AUTO_UPDATE_CORE', false );
启用所有 WordPress 更新:
define( 'WP_AUTO_UPDATE_CORE', true );
只启用小版本更新(默认):
define( 'WP_AUTO_UPDATE_CORE', 'minor' );
清理图片缩略图
默认情况下,WordPress 在上传图片的时候,会根据图片格式创建一组图片,当你更改设置的时候,这些图片不会被删除,如果你不想那么多图片的时候:
define( 'IMAGE_EDIT_OVERWRITE', true );
屏蔽编辑未过滤的HTML代码
默认情况下,单站点下的管理员和编辑角色的用户是可以发布未过滤的HTML代码到日志标题,内容和留言中。多站点只有超级管理员才行(super admin),所有其他用户都认为不可信的。
如果要屏蔽所有的用户,包括管理员,超级管理员:
define( 'DISALLOW_UNFILTERED_HTML', true );