记录一些常用的函数和瞎折腾的过程……

移除wordpressp冗余无用的头部代码

wordpress默认调用wp_head()函数,包含了许多我们不需要的头部代码,这些代码我们其实可以functions.php将其禁用掉。

//去除WORDPRESS自带的 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_action('embed_head','print_emoji_detection_script');
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');
add_filter( 'emoji_svg_url', '__return_false');//禁用emoji DNS预解析
//去除 WLW, Generator, Feeds 和 ShortLink
remove_action('wp_head', 'rsd_link'); //removes EditURI/RSD (Really Simple Discovery) link.
remove_action('wp_head', 'wlwmanifest_link'); //removes wlwmanifest (Windows Live Writer) link.
remove_action('wp_head', 'wp_generator'); //removes meta name generator.
remove_action('wp_head', 'wp_shortlink_wp_head'); //removes shortlink.
remove_action( 'wp_head', 'feed_links', 2 ); //removes feed links.
remove_action('wp_head', 'feed_links_extra', 3 ); //removes comments feed.
remove_action( 'wp_head', 'rel_canonical' ); //去除canonical链接
//去除 Previous 和 Next 文章链接
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');

去除 XFN (XHTML Friends Network) Profile 链接 和 Pingback URL。这个 rel=profile 链接和 rel=Pingback 标记可以从header.php文件里直接删除。打开Wordperss主题里的header.php文件,删除下面两行就可以了:

<link rel="profile" href="http://gmpg.org/xfn/11">
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>">
//禁用REST API功能代码
add_filter('rest_enabled', '__return_false');
add_filter('rest_jsonp_enabled', '__return_false');
//移除wp-json链接的代码
remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
remove_action( 'wp_head', 'wp_oembed_add_discovery_links', 10 );

需要注意的是,屏蔽 REST API 会直接导致 文章 Emebed 功能失效。
所以连着Emebed一起禁用掉吧:

//屏蔽文章 Embed 功能
remove_action('rest_api_init', 'wp_oembed_register_route');
remove_filter('rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4);
remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10 );
remove_filter('oembed_response_data',   'get_oembed_response_data_rich',  10, 4);
remove_action('wp_head', 'wp_oembed_add_discovery_links');
remove_action('wp_head', 'wp_oembed_add_host_js');

wodpress的xmlrpc功能普通用户基本也用不上,为了安全起见,也可以禁用掉:

//移除xmlrpc,保护安全
add_filter('xmlrpc_enabled', '__return_false');

移除了不需要的头部代码后,感觉清爽多了哈!

《移除wordpressp冗余无用的头部代码》7条评论
  1. 博主用着typecho,却写了一大堆wordpress的文章,这这这。。。

    神父 回复
  2. 我尝试了一下你的去除 Previous 和 Next 文章链接

    发现还在。。。。

    穹庐 回复
    • @穹庐 亲测用这个是有效的:remove_action(‘wp_head’, ‘adjacent_posts_rel_link_wp_head’);

      ProgramSay 回复
  3. 代码是个好东西,可惜我暂时不用wp了。

    尹先生 回复
发表评论