wp_head()は、テーマが何も実装していなくても、name属性の値がgeneratorのmetaタグやshortlink、RSD、フィード案内リンクなど複数のタグを自動的に出力します。これらは、サイトの表示や記事の投稿・編集の動作には関わっていないタグです。
functions.phpにremove_action()を追加するだけで、次の4つを削除できます。
- name属性の値がgeneratorのmetaタグ
- rel属性の値がshortlinkのlinkタグ
- rel属性の値がEditURIのlinkタグ(通称RSD)
- rel属性の値がalternateのlinkタグ(フィード案内用)
この記事では、それぞれのタグが何を出力していて、消さないとどうなるか、どう消すかを順番に説明します。
name属性の値がgeneratorのmetaタグを消す
<meta name="generator" content="WordPress X.X.X">は、name属性の値がgeneratorのmetaタグで、使用しているWordPressの正確なバージョンをページ内に出力します。
このタグを残しておくと、サイトが使っているWordPressのバージョンが外部から分かる状態になります。バージョンが特定できると、そのバージョンの既知の脆弱性を狙われやすくなります。
削除は次の1行をfunctions.phpに追加するだけです。
// name属性がgeneratorのmetaタグを削除
remove_action('wp_head', 'wp_generator');
rel属性の値がshortlinkのlinkタグを消す
<link rel='shortlink' href='https://example.com/?p=123'>は、rel属性の値がshortlinkのlinkタグで、投稿や固定ページの短縮URLを出力します。
投稿ID(?p=123の123部分)は連番の数値なので、外部から見えても特に問題はありません。見た目を整理する目的で削除する、という位置づけです。
削除は次の1行をfunctions.phpに追加するだけです。
// rel属性がshortlinkのlinkタグを削除
remove_action('wp_head', 'wp_shortlink_wp_head');
rel属性の値がEditURIのlinkタグ(通称RSD)を消す
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://example.com/xmlrpc.php?rsd" />は、rel属性の値がEditURIのlinkタグで、外部のブログ投稿ツールがxmlrpc.phpの場所を自動的に見つけられるように案内しています。
xmlrpc.phpはhttps://example.com/xmlrpc.phpのように、常に決まった場所にあるファイルです。案内タグがなくても場所は変わらないので、これを消しても防御にはなりません。見た目を整理する目的で削除する、という位置づけです。
削除は次の1行をfunctions.phpに追加するだけです。
// rel属性がEditURIのlinkタグ(RSD)を削除
remove_action('wp_head', 'rsd_link');
なお、XML-RPCもadd_filter('xmlrpc_enabled', '__return_false')で機能の一部を無効化できますが、影響を受ける外部連携(Jetpackなど)があるかどうかの見極めが必要なため、今回はこれ以上は書きません。より強くセキュリティ対策をしたい場合は、サーバー側でxmlrpc.php自体をブロックする方法もあります。
rel属性の値がalternateのlinkタグ(フィード案内)を消す
feed_links_extra()は、個別記事のコメントフィードや、カテゴリー・タグ・投稿者・検索結果ページのフィードを案内する<link rel='alternate' type='application/rss+xml' title="..." href="https://example.com/...">を、ページの種類ごとに複数出力します。
コメント機能やRSS購読を使っていないなら、これらのリンクは特に意味を持ちません。消しても問題ありません。
削除は次の1行をfunctions.phpに追加するだけです。第3引数に優先度3を指定する必要があります(WordPressコア側がこの優先度で登録しているため、remove_action()側も合わせないと削除されません)。
// rel属性がalternateのlinkタグ(フィード案内)を削除
remove_action('wp_head', 'feed_links_extra', 3);
まとめ
wp_head()が出力するgeneratorタグ・shortlinkタグ・RSDタグ・フィード案内リンクは、remove_action()で削除できる。- これらはいずれも
<head>内の案内タグを消すだけで、投稿ID・xmlrpc.phpの場所・フィードそのものといった実際の機能を無効化するわけではない。 - フィード案内リンクを消しても、フィードのURLを直接知っていれば購読は可能。自動検出ができなくなるだけ。
適用後は、実際にブラウザでページのソースを表示し、該当タグが消えているか確認すると安心です。
この記事の内容はWordPress 7.0.2で確認しています。