WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统(CMS)来使用。WordPress有许多第三方开发的免费模板,安装方式简单易用。不过要做一个自己的模板,则需要你有一定的专业知识。比如你至少要懂的标准通用标记语言下的一个应用HTML代码、CSS、PHP等相关知识。
wordpress最为全球最流行的博客或者CMS程序,WordPress的安装过程非常简单,基本上在一两分钟内可以处理完。但安装完,花一点时间来对WordPress进行优化,不但有利于提高安全系数,而且能够更好地发挥WordPress的作用。
我们这里需要对functions.php进行添加一些代码来帮助和优化WordPress,提高国内的访问速度!
WordPress新站必须做的21个优化设置
1. 改变默认存放媒体的文件夹
WordPress 默认是把图片、文件、视频等一切上传的媒体统一放置到wp-content目录下的uploads文件下。这样是比较方便博主操作,但事实上,如果将图片 等媒体存放到一个子域名下面,会带来几个好处。首先,图片等文件的链接地址会更短;其次,日常的备份工作会更加的方便;更重要的是,将图片等文件存到另外 的子域名,能够允许并行下载,从而提高网页的加载速度。
WordPress 3.5及以后的版本,不允许更改存放媒体的文件夹位置,你可以使用 Upload Url and Path Enabler 这个插件来解决这个问题。
2. 移除不必要的信息,如WordPress版本
移除不必要的信息可以更好的保证wordpress的安全。可以找到模板文件夹里面的 functions.php 文件,将下列代码加进去。
remove_action( 'wp_head', 'wp_generator' ) ;
remove_action( 'wp_head', 'wlwmanifest_link' ) ;
remove_action( 'wp_head', 'rsd_link' ) ;
3. 禁止浏览wordpress文件夹目录
将下列代码加入根目录下的 .htaccess 文件夹。同时,确保在wp-content/themes 和 wp-content/plugins各有一个空白的 index.php文件。
Options All -Indexes
4. 取消WordPress评论框下的”HTML 标签和属性
WordPress评论框里面可以添加一些html标签,但这经常会导致大量的垃圾链接,并且可能会引发安全隐患。建议将下列代码加入到模板的 functions.php 文件来取消该功能。
add_filter( 'pre_comment_content', 'wp_specialchars' );
5. 关闭WordPress的版本修订功能
WordPress会自动保存文章的各个修订版本,如果文章量大,且文章经常修改的话,会导致数据库变得臃肿,建议取消。可将下列代码放置到WordPress根目录下的 wp-config.php 文件,来取消版本修订功能。
define( 'WP_POST_REVISIONS', false);
当然,你也可以通过下面的代码来限制wordpress修订版本保存的次数:
define( 'WP_POST_REVISIONS', 3);
6. 修改wordpress自动保存的时间
wordpress的自动保存功能默认每分钟保存一次,保存的瞬间,浏览器基本会处于假死的状态。你可以通过下面的代码来修改wordpress自动保存的时间间隔。
define( 'AUTOSAVE_INTERVAL', 120 );
7. 隐藏二级RSS地址
WordPress 默认有多个RSS地址,如文章rss,评论rss,整站rss,评论rss,甚至分类rss,存档rss等。使用rss阅读器订阅的时候,读者很容易被这 么多的rss搞糊涂。建议只发布整站的rss,可以用将下面的代码放到模板的 functions.php 文件实现。
emove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 3 );
8. 将所有的RSS地址转向主RSS地址
在上一点,我们仅仅是从模板移除部分rss地址,但实际上这些rss是仍然存在的。可以通过将下面的代码加入 .htaccess 文件,来将各个RSS地址转向主RSS地址。记得将里面的RSS链接换成你自己的。
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator) [NC]
RewriteRule ^feed/?.*$ http://feeds.labnol.org/labnol [L,NC,R=301]
9. 隐藏wordpress登陆界面的错误提示
wordpress默认的登陆界面,会提示你密码错误,还是用户名错误。但这很容易被黑客利用来暴力破解密码,因此,有必要隐藏这个提示,将下列代码加入到 functions.php 文件就可实现。
function no_errors_please(){
return 'GET OFF MY LAWN !! RIGHT NOW !!';
}
add_filter( 'login_errors', 'no_errors_please' );
10. 采用多步验证登陆
Google 已经采用两步验证登陆的措施了,但wordpress默认没有这个功能。具体可在今后WP酷所发布的文章中查看。
11. 更改固定链接结构
默认的wordpress固定链接是不利于SEO的,建议看看wordpress永久链接设置的六大技巧。
12. 添加 favicon 标识
一 个favicon 标识能够很好的提升博客的档次,可以使用Favicon 在线生成器来生成favicon标识。将生成的 favicon.ico 放在wordpress根目录后,找到模板的header.php文件,在<head>与</head>之间插入下面的代码即可。
将其中链接改成你自己的。
13. 禁止搜索引擎索引wordpress程序自身
搜索引擎索引站点是好的,但没必要索引wordpress程序本身,可以将下面的代码加入到wordpress根目录下的 robots.txt 文件里面。
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/plugins/
Disallow: /wp-content/themes/
Disallow: /feed/
Disallow: */feed/
14. 将 Admin 账户权限降低
Admin是默认的wordpress管理员账户,为了降低安全隐患,你可以新建一个管理员账户,然后将默认的admin管理员账户权限降低。
16. 不要使用wordpress自带搜索
建议使用wordpress自定义搜索,在减轻服务器压力的同时,更好的为读者提供便利。若想关闭WordPress自带搜索可以在主题目录下的functions.php中添加:
function fb_filter_query( $query, $error = true ) {
if ( is_search() ) {
$query->is_search = false;
$query->query_vars[s] = false;
$query->query[s] = false;
// to error
if ( $error == true )
$query->is_404 = true;
}
}
add_action( ‘parse_query’, ‘fb_filter_query’ );
add_filter( ‘get_search_form’, create_function( ‘$a’, “return null;” ) );
17. 删除所有不用的模板和插件
删除所有不用的模板和插件,一来可以节省空间,二来可以减少对服务器的压力,三来,也可以减少一些引发漏洞的可能。
18. 停用wordpress的链接猜测功能
WordPress 有一个很奇怪的功能,假如一个人从外部链接进入 blogunion.org/hello 这个链接,如果你的网站已经将该链接移除,他会转到具有相类似词组的页面,如 blogunion.org/hello-world 。
如果你想直接以404错误页面来代替这个功能,你可以将以下代码加入到wordpress模板里面的 functions.php 文件。
add_filter('redirect_canonical', 'stop_guessing');
function stop_guessing($url) {
if (is_404()) {
return false;
}
return $url;
}
19. 让访问者缓存wordpress页面内容
让访问者缓存wordpress页面内容,这样读者就能更快速的载入你的站点。你可以通过将以下的代码加入到 .htaccess 文件,或使用wordpress缓存插件WP Super Cache、Hyper Cache这类插件来解决这个问题。
ExpiresActive On
ExpiresByType image/gif "access plus 30 days"
ExpiresByType image/jpeg "access plus 30 days"
ExpiresByType image/png "access plus 30 days"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
20. 禁用wordpress后台文件编辑功能
wordpress 默认是管理员登陆后,可以直接在后台修改wordpress模板和插件等文件。但对于很多不熟悉wordpress的人来说,很可能一个修改错误,整个网 站都崩溃了。如果你是帮别人维护wordpress,而那个人又是个菜鸟。那么你会非常需要这个功能。你可以将下面的代码加入到 wp-config.php 文件来实现。
define( 'DISALLOW_FILE_EDIT', true );
21. 移除链接里面的动态参数
例如,博客联盟的域名是blogunion.org,因为各种各样的原因,经常会出现blogunion.org/?ref=xxxx这样的链接。这对于SEO是不利的,会降低链接的质量。你可以通过将以下代码加入到 .htaccess 文件来移除这些参数。
RewriteEngine On
RewriteCond %{QUERY_STRING} !=""
RewriteCond %{QUERY_STRING} !^p=.*
RewriteCond %{QUERY_STRING} !^s=.*
RewriteCond %{REQUEST_URI} !^/wp-admin.*
RewriteRule ^(.*)$ /$1? [R=301,L]
WordPress新版必备优化代码
<!--添加优化代码到主题目录functions.php文件-->
/*彻底关闭自动更新(核心程序/主题/插件/翻译自动更新*/
add_filter('automatic_updater_disabled', '__return_true');
/*关闭更新检查定时作业*/
remove_action('init', 'wp_schedule_update_checks');
/*移除已有的版本检查定时作业*/
wp_clear_scheduled_hook('wp_version_check');
/*移除已有的插件更新定时作业*/
wp_clear_scheduled_hook('wp_update_plugins');
/*移除已有的主题更新定时作业*/
wp_clear_scheduled_hook('wp_update_themes');
/*移除已有的自动更新定时作业*/
wp_clear_scheduled_hook('wp_maybe_auto_update');
/*移除后台内核更新检查*/
remove_action( 'admin_init', '_maybe_update_core' );
/*移除后台插件更新检查*/
remove_action( 'load-plugins.php', 'wp_update_plugins' );
remove_action( 'load-update.php', 'wp_update_plugins' );
remove_action( 'load-update-core.php', 'wp_update_plugins' );
remove_action( 'admin_init', '_maybe_update_plugins' );
/*移除后台主题更新检查*/
remove_action( 'load-themes.php', 'wp_update_themes' );
remove_action( 'load-update.php', 'wp_update_themes' );
remove_action( 'load-update-core.php', 'wp_update_themes' );
remove_action( 'admin_init', '_maybe_update_themes' );
/*关闭程序更新提示*/
add_filter( 'pre_site_transient_update_core', function($a){ return null; });
/*关闭插件更新提示*/
add_filter('pre_site_transient_update_plugins', function($a){return null;});
/*关闭主题更新提示*/
add_filter('pre_site_transient_update_themes', function($a){return null;});
//关闭WordPress的XML-RPC功能
add_filter('xmlrpc_enabled', '__return_false');
/* 关闭XML-RPC的pingback端口 */
add_filter( 'xmlrpc_methods', 'remove_xmlrpc_pingback_ping' );
function remove_xmlrpc_pingback_ping( $methods ) {
unset( $methods['pingback.ping'] );
return $methods;
}
//禁用 pingbacks, enclosures, trackbacks
remove_action( 'do_pings', 'do_all_pings', 10 );
//去掉 _encloseme 和 do_ping 操作
remove_action( 'publish_post','_publish_post_hook',5 );
/* 禁止加载s.w.org获取表情和头像 */
remove_action('wp_head', 'print_emoji_detection_script', 7 );
remove_action('admin_print_scripts','print_emoji_detection_script');
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('admin_print_styles', 'print_emoji_styles');
function remove_dns_prefetch( $hints, $relation_type ) {
if ( 'dns-prefetch' === $relation_type ) {
return array_diff( wp_dependencies_unique_hosts(), $hints );
}
return $hints;
}
add_filter( 'wp_resource_hints', 'remove_dns_prefetch', 10, 2 );
/* 完全禁止REST API、移除wp-json链接 */
function lerm_disable_rest_api( $access ) {
return new WP_Error(
'Stop!',
'Soooooryyyy',
array(
'status' => 403,
)
);
}
add_filter( 'rest_authentication_errors', 'lerm_disable_rest_api' );
remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
/* 禁止查询网站静态资源连接版本字符 */
function _remove_script_version ( $src ){
$parts = explode( '?', $src );
return $parts[0];
}
add_filter( 'script_loader_src', '_remove_script_version', 15, 1 );
add_filter( 'style_loader_src', '_remove_script_version', 15, 1 );
/* 移除前端网页源代码内的头部冗余代码 */
remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'rsd_link' );
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'index_rel_link' );
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'wp_generator' );
/* 禁止新版文章编辑器加载前端样式 */
function wpassist_remove_block_library_css(){
wp_dequeue_style( 'wp-block-library' );
}
remove_action( 'wp_enqueue_scripts', 'wp_common_block_scripts_and_styles' );
add_action( 'wp_enqueue_scripts', 'wpassist_remove_block_library_css' );
/* 移除新版本站点健康状态面板和菜单项 */
add_action( 'admin_menu', 'remove_site_health_menu' );
function remove_site_health_menu(){
remove_submenu_page( 'tools.php','site-health.php' );
}
/* 禁用5.5版后自带的XML站点地图 */
add_filter( 'wp_sitemaps_enabled', '__return_false' );
/* 移除前后台顶部工具栏指定菜单 */
function admin_bar_item ( WP_Admin_Bar $admin_bar ) {
$admin_bar->remove_menu('wp-logo'); //移动wp的logo
$admin_bar->remove_menu('site-name'); //移动站点名称
$admin_bar->remove_menu('updates'); //移动更新提示
$admin_bar->remove_menu('comments'); //移动评论提示
/*$admin_bar->remove_menu('new-content'); //移除新建按钮 */
}
add_action( 'admin_bar_menu', 'admin_bar_item', 500 );
//移除后台仪表盘站点健康状态面板
add_action('wp_dashboard_setup', 'remove_site_health_dashboard_widget');
function remove_site_health_dashboard_widget()
{
remove_meta_box('dashboard_site_health', 'dashboard', 'normal');
}
//移除后台仪表盘菜单:站点健康状态
add_action( 'admin_menu', 'remove_site_health_menu' );
function remove_site_health_menu(){
remove_submenu_page( 'tools.php','site-health.php' );
}
//移除后台仪表盘菜单:活动、新闻
function bzg_remove_dashboard_widgets() {
global $wp_meta_boxes;
#移除 "活动"
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_activity']);
#移除 "WordPress 新闻"
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
}
add_action('wp_dashboard_setup', 'bzg_remove_dashboard_widgets' );
//移除后台仪表盘菜单:帮助
function bzg_remove_help() {
get_current_screen()->remove_help_tabs();
}
add_action('admin_head', 'bzg_remove_help');
//移除后台页面title标题的wordpress后缀
add_filter('admin_title', 'delAdminTitle', 10, 2);
function delAdminTitle($admin_title, $title){
return $title.' ‹ '.get_bloginfo('name');
}
//移除登陆页面title标题的wordpress后缀
add_filter('login_title', 'remove_login_title', 10, 2);
function remove_login_title($login_title, $title){
return $title.' ‹ '.get_bloginfo('name');
}
/* 彻底禁止4.4+版之后响应式图片功能及缩略图裁剪功能*/
// 禁止生成图像尺寸
function zm_customize_image_sizes( $sizes ){
unset( $sizes[ 'thumbnail' ]);
unset( $sizes[ 'medium' ]);
unset( $sizes[ 'medium_large' ] );
unset( $sizes[ 'large' ]);
unset( $sizes[ 'full' ] );
unset( $sizes['1536x1536'] );
unset( $sizes['2048x2048'] );
return $sizes;
}
add_filter( 'intermediate_image_sizes_advanced', 'zm_customize_image_sizes' );
// 禁止缩放图片尺寸
add_filter('big_image_size_threshold', '__return_false');
// 禁止生成其它图像尺寸
function shapeSpace_disable_other_image_sizes() {
// 禁止通过set_post_thumbnail_size()函数生成的图片尺寸
remove_image_size('post-thumbnail');
// 禁止添加其它图像尺寸
remove_image_size('another-size');
}
add_action('init', 'shapeSpace_disable_other_image_sizes');
//切换经典文章编辑器(v5.x开始默认古腾堡编辑器)
add_filter('use_block_editor_for_post', '__return_false');
//替换评论用户头像链接为国内镜像加速访问
add_filter('get_avatar', function ($avatar) {
return str_replace([
'www.gravatar.com/avatar/',
'0.gravatar.com/avatar/',
'1.gravatar.com/avatar/',
'2.gravatar.com/avatar/',
'dn-qiniu-avatar.qbox.me/avatar/',
'gravatar.loli.net/avatar/'
], 'cravatar.cn/', $avatar);
});
//取消内容转义
remove_filter('the_content', 'wptexturize');
//取消摘要转义
remove_filter('the_excerpt', 'wptexturize');
//取消评论转义
remove_filter('comment_text', 'wptexturize');
//禁止转义引号字符
remove_filter('the_content', 'wptexturize'); // 禁止英文引号转义为中文引号
//文章插入图片自动移除 img 的 width、height、class 属性;
add_filter( 'post_thumbnail_html', 'fanly_remove_images_attribute', 10 );
add_filter( 'image_send_to_editor', 'fanly_remove_images_attribute', 10 );
function fanly_remove_images_attribute( $html ) {
//$html = preg_replace( '/(width|height)="\d*"\s/', "", $html );
$html = preg_replace( '/width="(\d*)"\s+height="(\d*)"\s+class="[^"]*"/', "", $html );
$html = preg_replace( '/ /', "", $html );
return $html;
}
// 自适应图片删除width和height
function ludou_remove_width_height_attribute($content){
preg_match_all('/<[img|IMG].*?src=[\'|"](.*?(?:[\.gif|\.jpg|\.png\.webp]))[\'|"].*?[\/]?>/', $content, $images);
if(!empty($images)) {
foreach($images[0] as $index => $value){
$new_img = preg_replace('/(width|height)="\d*"\s/', "", $images[0][$index]);
$content = str_replace($images[0][$index], $new_img, $content);
}
}
return $content;
}
// 判断是否是移动设备浏览
if(wp_is_mobile()) {
#删除文章内容中img的width和height属性
add_filter('the_content', 'ludou_remove_width_height_attribute', 99);
}
/* 删除文章时删除图片附件 */
function delete_post_and_attachments($post_ID) {
global $wpdb;
#删除特色图片
$thumbnails = $wpdb->get_results( "SELECT * FROM $wpdb->postmeta WHERE meta_key = '_thumbnail_id' AND post_id = $post_ID" );
foreach ( $thumbnails as $thumbnail ) {
wp_delete_attachment( $thumbnail->meta_value, true );
}
#删除图片附件
$attachments = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_parent = $post_ID AND post_type = 'attachment'" );
foreach ( $attachments as $attachment ) {
wp_delete_attachment( $attachment->ID, true );
}
$wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_key = '_thumbnail_id' AND post_id = $post_ID" );
}
add_action('before_delete_post', 'delete_post_and_attachments');
评论前必须登录!
注册