怎么移除頭部不必要的元素標簽? - WordPress開發

    這一節的wordpress開發教程就教大家如何來移除wordpress頭部不必要的元素標簽,增加網站的安全性和提升代碼的整潔。

    大家在開發wordpress主題時需要用到一個很重要的函數: wp_head() ,但這個函數在提高便利的同時,也會加一些我們不需要的東西,例如 WordPress版本號、css、js、meta元素和標簽。

    如果這些代碼和資源在主題中用不上,那可得想想辦法把這些用不到的東西給優化掉,這一節的wordpress開發教程就教大家如何來移除wordpress頭部不必要的元素標簽。

    1、移除WordPress版本信息

    WordPress自動添加版本號信息,在head區域,可以看到(如下):

    <meta name="generator" content="WordPress 4.8" />

    版本號是默認添加的,但是可以被黑客利用,攻擊特定版本的WordPress漏洞。

    移除代碼(如下):

    remove_action( 'wp_head', 'wp_generator' );

    2、移除離線編輯器開放接口

    WordPress自動添加兩行離線編輯器的開放接口,在head區域,可以看到(如下):

    <link rel="EditURI" type="application/rsd+xml" title="RSD"  />
    <link rel="wlwmanifest" type="application/wlwmanifest+xml"  />

    其中RSD是一個廣義的接口,wlwmanifest是針對微軟Live Writer編輯器的。如果你不需要離線編輯,可移除之。即便你需要使用離線編輯器,大部分時候也不需要這兩行代碼。Live Writer自己知道它們。保留這兩行代碼可能會留有安全隱患。

    移除代碼(如下):

    remove_action( 'wp_head', 'rsd_link' );
    remove_action( 'wp_head', 'wlwmanifest_link' );

    3、移除前后文、第一篇文章、主頁meta信息

    WordPress把前后文、第一篇文章和主頁鏈接全放在meta中。我認為于SEO幫助不大,反使得頭部信息巨大。

    移除代碼(如下):

    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 );

    4、移除feed

    HTML中通過來指定博客feed。可以被瀏覽器檢測到,然后被讀者訂閱。如果你不想添加feed,或者想使用燒制的feed(如FeedSky或者Feedburner燒制的feed),可以移除之。

    remove_action( 'wp_head', 'feed_links', 2 );//文章和評論feed
    remove_action( 'wp_head', 'feed_links_extra', 3 ); //分類等feed

    5、禁用embeds功能并移除wp-embed.min.js文件

    WordPress自動添加embeds功能和wp-embed.min.js文件,在head區域,可以看到(如下):

    <script type='text/javascript' src='http://wordpress.org/wp-includes/js/wp-embed.min.js?ver=4.8'></script>

    移除代碼(如下):

    function disable_embeds_init() {
      /* @var WP $wp */
      global $wp;
      // Remove the embed query var.
      $wp->public_query_vars = array_diff( $wp->public_query_vars, array(
        'embed',
      ) );
      // Remove the REST API endpoint.
      remove_action( 'rest_api_init', 'wp_oembed_register_route' );
      // Turn off
      add_filter( 'embed_oembed_discover', '__return_false' );
      // Don't filter oEmbed results.
      remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );
      // Remove oEmbed discovery links.
      remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
      // Remove oEmbed-specific JavaScript from the front-end and back-end.
      remove_action( 'wp_head', 'wp_oembed_add_host_js' );
      add_filter( 'tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin' );
      // Remove all embeds rewrite rules.
      add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );
    }
    add_action( 'init', 'disable_embeds_init', 9999 );
    /**
     * Removes the 'wpembed' TinyMCE plugin.
     *
     * @since 1.0.0
     *
     * @param array $plugins List of TinyMCE plugins.
     * @return array The modified list.
     */
    function disable_embeds_tiny_mce_plugin( $plugins ) {
      return array_diff( $plugins, array( 'wpembed' ) );
    }
    /**
     * Remove all rewrite rules related to embeds.
     *
     * @since 1.2.0
     *
     * @param array $rules WordPress rewrite rules.
     * @return array Rewrite rules without embeds rules.
     */
    function disable_embeds_rewrites( $rules ) {
      foreach ( $rules as $rule => $rewrite ) {
        if ( false !== strpos( $rewrite, 'embed=true' ) ) {
          unset( $rules[ $rule ] );
        }
      }
      return $rules;
    }
    /**
     * Remove embeds rewrite rules on plugin activation.
     *
     * @since 1.2.0
     */
    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' );
    /**
     * Flush rewrite rules on plugin deactivation.
     *
     * @since 1.2.0
     */
    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' );

    6、移除WordPress頭部加載DNS預獲取(dns-prefetch)

    在head我們可以看到(如下):

    <link rel='dns-prefetch' href='//s.w.org' />

    移除代碼(如下):

    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 );

    7、移除emoji表情script和style

    在head我門可以看到(如下):

    <script type="text/javascript">
    			window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/2.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/2.3\/svg\/","svgExt":".svg","source":{"concatemoji":"http:\/\/wordpress.org\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.8"}};
    			!function(a,b,c){function d(a){var b,c,d,e,f=String.fromCharCode;if(!k||!k.fillText)return!1;switch(k.clearRect(0,0,j.width,j.height),k.textBaseline="top",k.font="600 32px Arial",a){case"flag":return k.fillText(f(55356,56826,55356,56819),0,0),b=j.toDataURL(),k.clearRect(0,0,j.width,j.height),k.fillText(f(55356,56826,8203,55356,56819),0,0),c=j.toDataURL(),b===c&&(k.clearRect(0,0,j.width,j.height),k.fillText(f(55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447),0,0),b=j.toDataURL(),k.clearRect(0,0,j.width,j.height),k.fillText(f(55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447),0,0),c=j.toDataURL(),b!==c);case"emoji4":return k.fillText(f(55358,56794,8205,9794,65039),0,0),d=j.toDataURL(),k.clearRect(0,0,j.width,j.height),k.fillText(f(55358,56794,8203,9794,65039),0,0),e=j.toDataURL(),d!==e}return!1}function e(a){var c=b.createElement("script");c.src=a,c.defer=c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g,h,i,j=b.createElement("canvas"),k=j.getContext&&j.getContext("2d");for(i=Array("flag","emoji4"),c.supports={everything:!0,everythingExceptFlag:!0},h=0;h<i.length;h++)c.supports[i[h]]=d(i[h]),c.supports.everything=c.supports.everything&&c.supports[i[h]],"flag"!==i[h]&&(c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&c.supports[i[h]]);c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&!c.supports.flag,c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.everything||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
    		</script>
    		<style type="text/css">
    img.wp-smiley,
    img.emoji {
    	display: inline !important;
    	border: none !important;
    	box-shadow: none !important;
    	height: 1em !important;
    	width: 1em !important;
    	margin: 0 .07em !important;
    	vertical-align: -0.1em !important;
    	background: none !important;
    	padding: 0 !important;
    }
    </style>

    移除代碼(如下):

    remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
    remove_action( 'wp_print_styles', 'print_emoji_styles' );

    8、移除wp-json鏈接

    在head我們可以看到(如下):

    <link rel='https://api.w.org/'  />

    移除代碼(如下):

    remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );

    以上就是本次wordpress教程分享的全部內容了,希望能在各位wordpress開發者開發主題時能幫上一臂之力。

    相關推薦

    怎么移除頭部不必要的元素標簽? - WordPress開發-Npcink
    怎么移除頭部不必要的元素標簽? - WordPress開發-Npcink

    怎么刪除wp_head多余的代碼? - wordpress開發

    怎么移除頭部不必要的元素標簽? - WordPress開發-Npcink
    怎么移除頭部不必要的元素標簽? - WordPress開發-Npcink

    怎么移除多余的代碼? - WordPress教程

    如果一般的用戶嫌使用代碼太麻煩的話,也可以看看有相關功能的wordpress插件:

    怎么移除頭部不必要的元素標簽? - WordPress開發-Npcink
    怎么移除頭部不必要的元素標簽? - WordPress開發-Npcink

    WPJAM Basic - 我愛水煮魚一鍵式全站優化WordPress插件

    資源

    KodExplorer - 可道云私有云存儲&協同辦公

    2019-11-28 1:40:53

    插件

    QQWorld收藏家豪華版(QQWorld Collector Deluxe) - WordPress采集插件

    2020-7-21 23:29:55

    ??
    Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
    無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
    0 條回復 A文章作者 M管理員
      暫無討論,說說你的看法吧
    ?
    個人中心
    購物車
    優惠劵
    今日簽到
    有新私信 私信列表
    搜索
    主站蜘蛛池模板: 亚洲日韩精品一区二区三区| 中文字幕日韩一区| 无码人妻精品一区二区三区久久| 在线视频一区二区三区| 国产亚洲一区二区三区在线不卡| 日韩精品一区二区亚洲AV观看| 激情综合丝袜美女一区二区| 亚洲综合av一区二区三区| 国产无套精品一区二区| 久久精品国产一区二区| 在线视频亚洲一区| 中文字幕日韩一区二区不卡 | 国模极品一区二区三区| 久久精品一区二区三区日韩| 国产免费一区二区三区不卡| 无码AV一区二区三区无码| 日韩美一区二区三区| 亚洲国产AV无码一区二区三区| 久久精品一区二区东京热| 国产AV一区二区三区传媒| 中文字幕在线无码一区| 无码人妻精品一区二区蜜桃AV| 精品视频一区二区三区四区| 麻豆高清免费国产一区| 97久久精品一区二区三区 | 欧洲精品一区二区三区在线观看| 97精品一区二区视频在线观看| 国内自拍视频一区二区三区| 无码人妻精品一区二区三区66| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 日本视频一区在线观看免费| 国产亚洲无线码一区二区 | 国产在线视频一区二区三区98| 成人区人妻精品一区二区不卡视频 | 国产福利微拍精品一区二区| 亚洲国产日韩在线一区| 人妻在线无码一区二区三区| 精品免费国产一区二区三区| 精品一区二区三区免费毛片| 一区二区国产在线播放| 久久精品一区二区东京热|