WordPress是一款非常好的CMS管理系统,基本上90%的PHP博客都会采用这样的内容管理系统,其主要原因在于便利、稳定、模板和插件丰富,基本上只要会上网的就会搭建属于自己的博客网站。但是大部分用户仅仅停留在使用程序上,随着时间的推移我们会发现自己的博客打开速度慢很多,而且会占用CPU暴涨的情况最糟糕的是用户打开页面的时间需要等上好几秒严重影响网站的用户体验。今天我们就从头开始一步一步的对wp程序做一次优化,效果非常的明显而且全是用代码片段来实现不会增加网站的负载情况。
禁止后台加载谷歌字体
要想打理好网站首先必须给我们管理员提供一个比较快速的管理后台,这是由于Wordpress后台外链加载了谷歌字体(代码位置在wordpress\wp-includes\script-loader.php
第580行),而谷歌服务器大家都知道的原因国内访问困难,严重影响页面加载速度。那么第一步就从后台入手先通过代码把这个字体给屏蔽掉。
- function wp_remove_open_sans_from_wp_core() {
- wp_deregister_style( ‘open-sans’ );
- wp_register_style( ‘open-sans’, false );
- wp_enqueue_style(‘open-sans’,”);
- }
- add_action( ‘init’, ‘wp_remove_open_sans_from_wp_core’ );
通过上述代码我们可以成功的屏蔽谷歌字体加载慢的问题,现在大家进入后台试试是不是比之前快了。后台优化完我们来看看前台有哪些需要优化的地方吧!
删除4.2版本后自动添加的emoji脚本
WordPress 4.2及以上版本,会自动在网站前台加入一段用于支持emjo
表情的脚本(JS+CSS),对于国内大部分站长来说,这个功能是没什么用处的,另外由于(JS+CSS)均托管在国外的服务器上,反而影响网站前台的加载速度。
前台自动添加的emoji
脚本代码如下:
如果在查看你网页源代码的时候发现类似上面的代码出现在头部就可以用下面的代码屏蔽掉以此来加速网站的加载速度。
- remove_action( ‘admin_print_scripts’, ‘print_emoji_detection_script’);
- remove_action( ‘admin_print_styles’, ‘print_emoji_styles’);
- remove_action( ‘wp_head’, ‘print_emoji_detection_script’, 7);
- remove_action( ‘wp_print_styles’, ‘print_emoji_styles’);
- remove_filter( ‘the_content_feed’, ‘wp_staticize_emoji’);
- remove_filter( ‘comment_text_rss’, ‘wp_staticize_emoji’);
- remove_filter( ‘wp_mail’, ‘wp_staticize_emoji_for_email’);
删除4.4版本自动添加的wp-json链接
WordPress 4.4更新新增了REST API
功能,通过REST API
可以很轻松的获取网站的数据,但是这个功能并不是每个网站都需要的,或者说我需要,但是并不希望他在head里面输出,所以给大家介绍下禁用REST API
或者说移除head里面wp-json
链接的方法。
前台自动添加的wp-json代码如下:
既然这个功能我们用不到那么果断屏蔽掉它把下面的代码添加到主题functions.php
文件中即可:
- add_filter(‘rest_enabled’, ‘_return_false’);
- add_filter(‘rest_jsonp_enabled’, ‘_return_false’);
- remove_action( ‘wp_head’, ‘rest_output_link_wp_head’, 10 );
- remove_action( ‘wp_head’, ‘wp_oembed_add_discovery_links’, 10 );
通过上面的代码我们可以成功的禁用REST API和移除wp-json链接
删除4.4版本自动引入的wp-embed.min.js文件
不得不说Wordpress4.4版本着实添加了不少功能,上面处理完REST API
功能下面我们来看看怎么屏蔽embeds
功能,这个功能可以允许更方便的引用第三方资源,但是对于大部分人来说真的很鸡肋。
如果你的网站升级到4.4版本会在底部引入了wp-embed.min.js
这个文件,如果用不到可以通过下面的代码屏蔽也可以安装WP官方的Disable Embeds
插件来屏蔽。
- function disable_embeds_init() {
-
- global $wp;
- $wp->public_query_vars = array_diff( $wp->public_query_vars, array(
- ’embed’,
- ) );
- remove_action( ‘rest_api_init’, ‘wp_oembed_register_route’ );
- add_filter( ’embed_oembed_discover’, ‘__return_false’ );
- remove_filter( ‘oembed_dataparse’, ‘wp_filter_oembed_result’, 10 );
- remove_action( ‘wp_head’, ‘wp_oembed_add_discovery_links’ );
- remove_action( ‘wp_head’, ‘wp_oembed_add_host_js’ );
- add_filter( ‘tiny_mce_plugins’, ‘disable_embeds_tiny_mce_plugin’ );
- add_filter( ‘rewrite_rules_array’, ‘disable_embeds_rewrites’ );
- }
- add_action( ‘init’, ‘disable_embeds_init’, 9999 );
- function disable_embeds_tiny_mce_plugin( $plugins ) {
- return array_diff( $plugins, array( ‘wpembed’ ) );
- }
- function disable_embeds_rewrites( $rules ) {
- foreach ( $rules as $rule => $rewrite ) {
- if ( false !== strpos( $rewrite, ’embed=true’ ) ) {
- unset( $rules[ $rule ] );
- }
- }
- return $rules;
- }
- function disable_embeds_remove_rewrite_rules() {
- add_filter( ‘rewrite_rules_array’, ‘disable_embeds_rewrites’ );
- flush_rewrite_rules();
- }
- register_activation_hook( __FILE__, ‘disable_embeds_remove_rewrite_rules’ );
- function disable_embeds_flush_rewrite_rules() {
- remove_filter( ‘rewrite_rules_array’, ‘disable_embeds_rewrites’ );
- flush_rewrite_rules();
- }
- register_deactivation_hook( __FILE__, ‘disable_embeds_flush_rewrite_rules’ );
这段代码提取自Disable Embeds插件,代码比较多,把上面的代码复制到主题的functions.php文件即可。
删除head头部多余脚本
我们在使用WP的时候如果主题优化做的不好的话会发现网站源代码的头部会加载很多我们不知道或者不需要的代码像WP程序的版本、文章的上下篇、远程离线编辑器接口、当前页面的索引和自动生成的短链接等如果有这种代码就可以用下面的代码去屏蔽掉。操作方法也很简单直接把代码复制到主题的functions.php
文件中即可。
- remove_action( ‘wp_head’, ‘feed_links_extra’, 3 );
- remove_action( ‘wp_head’, ‘feed_links’, 2 );
- remove_action( ‘wp_head’, ‘rsd_link’ );
- remove_action( ‘wp_head’, ‘wlwmanifest_link’ );
- remove_action( ‘wp_head’, ‘index_rel_link’ );
- remove_action( ‘wp_head’, ‘parent_post_rel_link’, 10, 0 );
- remove_action( ‘wp_head’, ‘start_post_rel_link’, 10, 0 );
- remove_action( ‘wp_head’, ‘wp_shortlink_wp_head’, 10, 0 );
- remove_action( ‘wp_head’, ‘adjacent_posts_rel_link’, 10, 0 );
- remove_action( ‘wp_head’, ‘wp_generator’ );
代码控制的项目比较多,取自己需要的即可!
用多说加速Gravatar头像
自从2014国家净网行动以来,国内进行了各种严打,很多网站因此关闭。这不,Gravatar头像服务也不能幸免于难,现在在国内已经基本上彻底被墙了,如果我们还在用默认的Gravatar头像的话网站会加载的很慢,但是头像功能对于博客来说又非常的实用,通过下面的这段代码我们可以把Gravatar头像通过多说的服务器来加载。
- function mytheme_get_avatar($avatar) {
- $avatar = str_replace(array(“www.gravatar.com”,“0.gravatar.com”,“1.gravatar.com”,“2.gravatar.com”),“gravatar.duoshuo.com”,$avatar);
- return $avatar;
- }
- add_filter( ‘get_avatar’, ‘mytheme_get_avatar’, 10, 3 );
原理也非常简单,wp默认的是用www.gravatar.com、0.gravatar.com、1.gravatar.com、2.gravatar.com 这四个来加载头像图片的,通过上面的代码我们把这些域名替换成多说的gravatar.duoshuo.com这样问题就解决了。上面提供的代码只需添加到functions.php就好了。非常简单而且方便,相信可以让你的网站访问速度快上一大截。
请问下,超过百万数据的wordpress如何优化?
博主您好,我博客昨天升级到了4.6版本,发现在头部多出了这么两段代码:
试着查看了下他人的博客,也多出了上面的第2段,但没有多出第1段代码(估计是我所使用主题单独造成的)。请问这个有用吗?如果需要去除它们,如何操作?恳请指点一二,不胜感激!