服务器优化
为 PHP 开启 OPCache
;php.ini
opcache.enable=1
; 可用内存,单位 megabytes
opcache.memory_consumption=256
; 控制内存中最多可以缓存多少个 php 文件
; 对多缓存文件限制,命中率不到 100%,可以提高这个值
opcache.max_accelerated_files=5000
; 检查文件修改时间周期,默认为 2,单位秒
opcache.revalidate_free=240
; 设置缓存过期时间
opcache.revalidate_freq=0
; 是否快速关闭,打开后在 hp request shutdown 时候内存回收速度会提高
opcache.fast_shutdown=1
; 不保存文件注释
opcache.save_comments=0
为 MySQL 开启 Query Cache
;my.cnf
query_cache_type=1
query_cache_limit=1M
query_cache_size=16M
在 Wordpress 中开启 gzip
// 此代码需要放在 define('WP_USE_THEMES', true); 后,
ob_start(‘ob_gzhandler’);
# nginx config
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_min_length 256;
gzip_http_version 1.1;
gzip_types text/plain text/css text/x-component text/html application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/x-icon image/svg+xml image/jpeg image/gif image/png font/opentype;
; php.ini
zlib.output_compression=On
zlib.output_compression_level=5
缓存
文件缓存
html 静态缓存
WP Super Cache 插件
Super Static Cache 插件
内存缓存
安装 Memcached 和 Batcache
yum -y install memcached
apt-get -y install memcached
下载 Memcached 插件 https://wordpress.org/plugins/memcached/ 下载 object-cache.php 移到 wp-content 目录下
下载 BatCache 插件 http://wordpress.org/extend/plugins/batcache/ 下载 object-cache.php 移到 wp-content 目录下
// wp-config.php
define('WP_CACHE', true);
关闭 Google 字体
function remove_open_sans() {
wp_deregister_style( 'open-sans' );
wp_register_style( 'open-sans', false );
wp_enqueue_style('open-sans','');
}
add_action( 'init', 'remove_open_sans' );
加速 Gravatar 头像
function my_avatar($avatar) {
$tmp = strpos($avatar, 'http');
$g = substr($avatar, $tmp, strpos($avatar, "'", $tmp) - $tmp);
$tmp = strpos($g, 'avatar/') + 7;
$f = substr($g, $tmp, strpos($g, "?", $tmp) - $tmp);
$w = get_bloginfo('wpurl');
$e = ABSPATH .'avatar/'. $f .'.jpg';
$t = 1209600; //设定时间为14天,单位为秒
if ( !is_file($e) || (time() - filemtime($e)) > $t ) { //头像不存在或时间超过14天,重新获取
copy(htmlspecialchars_decode($g), $e);
} else $avatar = strtr($avatar, array($g => $w.'/avatar/'.$f.'.jpg'));
if (filesize($e) < 500) copy($w.'/avatar/default.jpg', $e);
return $avatar;
}
add_filter('get_avatar', 'my_avatar');
合并请求
- Better WordPress Minify
WordPress Object Cache 函数
优化数据库 安装 WP-Optimize 插件 Smart WordPress 插件 开启 ETag
安全
关闭在线代码编辑
define('DISALLOW_FILE_EDIT', true);
识别文件监控变化
可以使用 iThemes Security 或 Wordfence 来监控 WordPress 的文件变动。
自动更新
define( 'WP_AUTO_UPDATE_CORE', true );
主题插件自动更新
add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_theme', '__return_true' );
关闭错误输出
define( 'WP_DEBUG_DISPLAY', false );
define( 'WP_DEBUG_LOG', true );
使用 ssl
define('FORCE_SSL_ADMIN, true);
修改数据库前缀
Change Table Prefix 插件修改数据库前缀
使用邮箱登录
安装 Email Login 插件
隐藏 wordpress 版本信息
/* Hide WP version strings from scripts and styles
* @return {string} $src
* @filter script_loader_src
* @filter style_loader_src
*/
function fjarrett_remove_wp_version_strings( $src ) {
global $wp_version;
parse_str(parse_url($src, PHP_URL_QUERY), $query);
if ( !empty($query['ver']) && $query['ver'] === $wp_version ) {
$src = remove_query_arg('ver', $src);
}
return $src;
}
add_filter( 'script_loader_src', 'fjarrett_remove_wp_version_strings' );
add_filter( 'style_loader_src', 'fjarrett_remove_wp_version_strings' );
/* Hide WP version strings from generator meta tag */
add_filter( 'the_generator', '__return_empty_string' );
其他安全插件
- BulletProof Security
- Login LockDown
关闭 json rest api
add_filter('json_enabled', '__return_false');
add_filter('json_jsonp_enabled', '__return_false');
Theme Check 插件
注销掉返回首页
add_action(‘wp_logout’,’auto_redirect_after_logout’);
function auto_redirect_after_logout(){
wp_redirect( home_url() ); // 注销后跳转到首页
exit();
}
屏蔽菜单
function remove_menus(){
remove_menu_page( 'upload.php' ); //媒体库
remove_menu_page( 'themes.php' ); //外观
remove_menu_page( 'plugins.php' ); //插件
remove_menu_page( 'users.php' ); //用户
remove_menu_page( 'tools.php' ); //工具
}
add_action( 'admin_menu', 'remove_menus' );
屏蔽子菜单
“function remove_submenu() {
// 删除”外观”下面的子菜单”编辑”
remove_submenu_page('themes.php', 'theme-editor.php');
}
if (is_admin()){
//删除子菜单
add_action('admin_init','remove_submenu');
}
屏蔽后台无用组件
function remove_dashboard_widget() {
global $wp_meta_boxes;
// 以下这一行代码将删除 "快速发布" 模块
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);
// 以下这一行代码将删除 "引入链接" 模块
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);
// 以下这一行代码将删除 "插件" 模块
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);
// 以下这一行代码将删除 "近期评论" 模块
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']);
// 以下这一行代码将删除 "近期草稿" 模块
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']);
// 以下这一行代码将删除 "WordPress 开发日志" 模块
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
// 以下这一行代码将删除 "其它 WordPress 新闻" 模块
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
}
add_action('wp_dashboard_setup', 'remove_dashboard_widget' );
移除 wordpress logo
function remove_admin_bar_logo() {
global $wp_admin_bar;
$wp_admin_bar->remove_menu('wp-logo');
}
add_action('wp_before_admin_bar_render', 'remove_admin_bar_logo', 0);
添加开发者信息
function remove_footer_admin () {
echo '由<a href="">白宦成 </a>开发';
}
add_filter('admin_footer_text', 'remove_footer_admin');
国际化
function i10n(){
$current_locale = get_locale();
if(!empty($current_locale)){
$mo_file = dirname(__FILE__).'/languages/'.$current_locale.".mo";
if (@file_exists($mo_file)&& is_readable($mo_file))
load_textdomain('your-plugins',$mo_file);
}
}
add_action('init','i10n');