WordPress优化小结

WordPress发展之今天,功能已是非常之强大。功能强大的同时也会使其变的臃肿,就是通常我们说的加载很慢,对网站体验非常之不友好。对于我们这种只是拿来写写博客的人来说,许多功能都不是必要的,甚至是无用的,所以就需要我们把我们不需要的内容和脚本给禁用掉,打开网页时不加载,这样的话打开网页的加载速度就会快很多。下面就来说说远航都禁用了哪些功能。

一、禁用谷歌字体

众所周知谷歌大陆的许多服务都被天朝“墙”了,谷歌字体也是禁用后就是省去加载时间

1
2
3
4
5
6
7
// 禁止后台加载谷歌字体
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' );

如果你是真喜欢谷歌字体,你也可以加载360CDN的谷歌字体加载源

1
2
3
4
5
6
function wp_replace_open_sans() {
  wp_deregister_style('open-sans');
  wp_register_style( 'open-sans', '//fonts.useso.com/css?family=Open+Sans:300italic,400italic,600italic,300,400,600' );
  if(is_admin()) wp_enqueue_style( 'open-sans');
}
add_action( 'init', 'wp_replace_open_sans' );

二、移除头部无用代码

加载一堆不知道干嘛用的代码,果断移除!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//去除头部无用代码
remove_action( 'wp_head', 'feed_links', 2 );  
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', 'parent_post_rel_link', 10, 0 );  
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );  
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );  
remove_action( 'wp_head', 'locale_stylesheet' );  
remove_action( 'publish_future_post', 'check_and_publish_future_post', 10, 1 );  
remove_action( 'wp_head', 'noindex', 1 );  
remove_action( 'wp_head', 'wp_print_head_scripts', 9 );  
remove_action( 'wp_head', 'wp_generator' );  
remove_action( 'wp_head', 'rel_canonical' );  
remove_action( 'wp_footer', 'wp_print_footer_scripts' );  
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );  
remove_action( 'template_redirect', 'wp_shortlink_header', 11, 0 );

三、移除emoji脚本

表情脚本,和谷歌字体一样,文件放在国外,加载很慢,移除!

1
2
3
4
5
6
7
8
//移除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');

四、移除wp-json链接

WordPress 4.4更新新增了REST API功能,通过REST API可以很轻松的获取网站的数据,但是这个功能并不是每个网站都需要的,移除!

1
2
3
4
5
//移除wp-json链接
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 );

五、禁用embeds功能

WordPress4.4版本embeds功能,这个功能可以允许更方便的引用第三方资源,但是对于大部分人来说真的很鸡肋。移除!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//禁用embeds功能
function disable_embeds_init() {
    /* @var WP $wp */
    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' );

六、禁用更新代码

这个要看个人需要了,现在wordrpess版本更新换代太快,天天冒出来更新提示也是很烦的。禁用!

1
2
3
4
5
6
7
//禁用更新代码
add_filter('pre_site_transient_update_core', create_function('$a', "return null;")); // 关闭核心提示
add_filter('pre_site_transient_update_plugins', create_function('$a', "return null;")); // 关闭插件提示
add_filter('pre_site_transient_update_themes', create_function('$a', "return null;")); // 关闭主题提示
remove_action('admin_init', '_maybe_update_core'); // 禁止 WordPress 检查更新
remove_action('admin_init', '_maybe_update_plugins'); // 禁止 WordPress 更新插件
remove_action('admin_init', '_maybe_update_themes'); // 禁止 WordPress 更新主题

七、调用ssl 头像链接

gravatar头像作为wordpess必用的,只不过也是墙了,不过https还未被墙,替换一下吧!

1
2
3
4
5
function get_ssl_avatar($avatar) {
   $avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&.*/','<img src="https://secure.gravatar.com/avatar/$1?s=$2" class="avatar avatar-$2" height="$2" width="$2">',$avatar);
   return $avatar;
}
add_filter('get_avatar', 'get_ssl_avatar');

八、清理菜单多余CSS CLASS

这个主要是修改菜单样式的时候发现的,一堆class标签,去掉吧,看着干净。

1
2
3
4
5
6
7
//清理菜单多余CSS CLASS
    add_filter('nav_menu_css_class', 'clean_menu_class', 100, 1);
    add_filter('nav_menu_item_id', 'clean_menu_class', 100, 1);
    add_filter('page_css_class', 'clean_menu_class', 100, 1);
    function clean_menu_class($var) {
    return is_array($var) ? array_intersect($var, array('current-menu-parent','current-menu-item','dropdown','menu-item-has-children')) : '';//这个数组里输入排除的CSS
    }

上面这些代码都是加载在主题的function.php里的,很简单,大家可以试一下,速度提升还是比较明显的。

给我留言