关注VPS主机与
服务器促销分享

WordPress新站必须做的21个优化设置及新版必备优化代码

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');
赞(1)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权, 转载请注明出处。
文章名称:《WordPress新站必须做的21个优化设置及新版必备优化代码》
文章链接:https://www.zyhot.com/article/13585.html
关于安全:任何IDC都有倒闭和跑路的可能,月付和备份是您的最佳选择,请保持良好的、有规则的备份习惯。
本站声明:本站仅做信息分享,不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本站请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本站,即表示您已经知晓并接受了此声明通告。

评论 抢沙发

评论前必须登录!

 

登录

找回密码

注册