COLUMN コラム
2022.5.30
【WordPress】functions.phpで不要なタグを削除しよう
DOLが抱えているサイトリニューアル案件では、WordPressのオリジナルテーマを作成することが多々あります。オリジナルテーマの作成は、まず静的なHTMLを用意してからWordPressの組み込みを行うのですが、組み込み後のソースコードを確認してみると記述した覚えのないタグがズラズラと追加されています。
これはWordPressの標準機能によるもので、ブログサイトとして利用する際に役立つタグを自動で追加してくれているのですが、コーポレートサイトやブランドサイトとして利用する場合はまったく不要のものだったりします。
不要なタグが混ざっているとソースコードが見づらくなる上に、セキュリティ的にも宜しくありません。そこで今回は「functions.php」を使用した不要なタグを削除する方法について紹介したいと思います。
1. functions.phpで削除できるタグ
1-1. WordPressのバージョン情報
<meta name="generator" content="WordPress 5.9.3" />
<meta name=”generator>は文書がどのソフトウェアで作成されたのかを示すタグです。WordPressで作成したサイトの場合、どのバージョンのWordPressで作成されたのかが自動で出力されてしまいます。WordPressの自動更新設定をONにして常に最新バージョンであればまだ良いのですが、もし古いバージョンを使用している場合、脆弱性をつかれて攻撃される恐れがあります。
バージョン情報はセキュリティ的にもよろしくないので削除しておきましょう。functions.phpには以下のコードを記述することで削除できます。
// WordPressバージョン情報の削除
remove_action('wp_head','wp_generator');
1-2. Windows Live Writerのマニフェストファイル
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://example.com/wp-includes/wlwmanifest.xml" />
このタグは「Windows Live Writer」というMicrosoftが提供しているブログエディタのマニフェストファイルです。このエディタを使用しない場合は不要なので削除しておきましょう。
// Windows Live Writerの削除
remove_action('wp_head', 'wlwmanifest_link');
また、それ以外の理由として「wlwmanifest.xml」というファイルは不正アクセスの要因にもなっているようです。レンタルサーバーの「Xserver」からも注意喚起のお知らせが出ていたので、セキュリティ対策の一貫としても削除しておくと良さそうです。
参考:WordPressの「wlwmanifest.xml」ファイルに対するアクセス制限と設定機能追加のお知らせ
1-3. 絵文字用のCSSとJavaScript
<script type="text/javascript">
window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/13.1.0\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/13.1.0\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/xxx.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=5.9.3"}};
/*! This file is auto-generated */
!function(e,a,t){var n,r,o,i=a.createElement("canvas"),p=i.getContext&&i.getContext("2d");function s(e,t){var a=String.fromCharCode;p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,e),0,0);e=i.toDataURL();return p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,t),0,0),e===i.toDataURL()}function c(e){var t=a.createElement("script");t.src=e,t.defer=t.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(t)}for(o=Array("flag","emoji"),t.supports={everything:!0,everythingExceptFlag:!0},r=0;r<o.length;r++)t.supports[o[r]]=function(e){if(!p||!p.fillText)return!1;switch(p.textBaseline="top",p.font="600 32px Arial",e){case"flag":return s([127987,65039,8205,9895,65039],[127987,65039,8203,9895,65039])?!1:!s([55356,56826,55356,56819],[55356,56826,8203,55356,56819])&&!s([55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447],[55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447]);case"emoji":return!s([10084,65039,8205,55357,56613],[10084,65039,8203,55357,56613])}return!1}(o[r]),t.supports.everything=t.supports.everything&&t.supports[o[r]],"flag"!==o[r]&&(t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&t.supports[o[r]]);t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&!t.supports.flag,t.DOMReady=!1,t.readyCallback=function(){t.DOMReady=!0},t.supports.everything||(n=function(){t.readyCallback()},a.addEventListener?(a.addEventListener("DOMContentLoaded",n,!1),e.addEventListener("load",n,!1)):(e.attachEvent("onload",n),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&t.readyCallback()})),(n=t.source||{}).concatemoji?c(n.concatemoji):n.wpemoji&&n.twemoji&&(c(n.twemoji),c(n.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 0.07em !important;
vertical-align: -0.1em !important;
background: none !important;
padding: 0 !important;
}
</style>
<head>タグ内に長々と記述されているこのタグを初めて見た時、ビックリしますよね。これはWordPressで絵文字を表示するためのタグです。企業サイトの投稿記事で絵文字が使われることはほぼないかと思いますが、運用方針を確認した上で不要そうなら削除してしまいましょう。
下記の2行を追加するだけで削除することができます。
// 絵文字設定の削除
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
1-4. フィード配信
<link rel="alternate" type="application/rss+xml" title="example.com » フィード" href="https://example.com/feed/" />
<link rel="alternate" type="application/rss+xml" title="example.com » コメントフィード" href="https://example.com/comments/feed/" />
このタグはRSSリーダーで記事の最新情報を取得する際に必要なフィード配信のリンクを表しています。サイトの運用がオウンドメディアとして集客を目的としたものであれば必要ですが、そうでない場合は不要なタグになります。下記の2行を追加して削除しておきましょう。
// フィード配信の削除
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'feed_links_extra', 3);
1-5. RSD
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://example.com/xmlrpc.php?rsd" />
このタグは「RSD(Really Simple Discovery)」へのリンクを表しています。WordPressの記事を外部のサービスから編集する際に必要なタグですが、WordPress管理画面からのみ編集をする場合はこのタグは不要になります。下記の1行を追加して削除しておきましょう。
// RSDの削除
remove_action( 'wp_head', 'rsd_link' );
おわりに
今回はWordPressで自動追加されたタグを「functions.php」で削除する方法について紹介しました。自動追加されたタグはブログサイトとして運用するのであれば役立つものですが、それ以外での運用を目的とした場合、必ずしも必要というわけではありません。案件に応じて不要なものは削除しておきましょう。
ソースコードが見やすくなるだけでなくサイトの軽量化にも繋がるので、まだ何も試したことがないよという方は、ぜひ今回の記事を参考に試していただければと思います。