WordPressのfunctions.phpでよく使うカスタマイズを、チェックボックスで選ぶだけで、コードをまとめて生成するWP-functions generatorをリニューアルしました。
2021年1月に公開したんだけど、個人的には非常に気に入っています。「秘伝のタレ」的にfunctions.phpを使い回してる事が多いかもしれません。が、チェックボックスで一覧になっていることで、案件によってどこまで制限をかけるかであったり、逆に実は知らなかったとか、忘れていた、なんてことを防げたりするのもメリットです。今回、ChatGPTでブラッシュアップして、CODEXで調整をしました。
以下、コードの解説を7回にわけて解説します。
1 WordPressのhead要素の余計なタグを削除して、軽量&安全にする方法まとめ
WordPress の <head> には、標準で非常に多くのタグが自動出力されます。
しかし、使わない機能まで読み込まれているケースが多く、速度やセキュリティに悪影響になることも。
今回は、不要なメタタグや外部リンクを削除して、軽量化とセキュリティ強化を実現する方法をわかりやすく整理します。
この記事でできるようになること
- WordPressが自動で出力するタグの正体を理解できる
- functions.php に貼るだけで、head 要素を整理できる
- サイトの読み込み速度・セキュリティ・SEO対策が向上する
- 「このタグは消していい?」「SEOに影響ある?」という判断ができる
削除できる主なタグ一覧と目的
| 目的 | 削除するタグ | 効果 |
|---|---|---|
| フィード無効化 | feed_links / feed_links_extra | RSS/Atomリンクを消す |
| 外部接続無効 | rsd_link | XML-RPC接続 (ブログエディタなど) を無効化 |
| oEmbed無効 | wp_oembed_add_discovery_links | 埋め込み用リンクの削除 |
| REST API無効 | rest_output_link_wp_head | 外部API用URLを隠す |
| WordPressバージョン非表示 | wp_generator | 攻撃者にWPのバージョンを伝えない |
| 短縮URL削除 | wp_shortlink_wp_head | wp.me形式の短縮URLリンクを消す |
| 隣接記事リンク削除 | adjacent_posts_rel_link_wp_head | SEO効果は薄いので不要 |
| index_rel_link 削除 | index_rel_link | サイトマップ未使用時は削除 |
functions.php に貼るだけ OK(安全な削除セット)
// フィード無効化(RSS/Atom)
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 3 );
// 外部接続用リンク(rsd_link)を削除
remove_action( 'wp_head', 'rsd_link' );
// REST API / oEmbed のメタ情報を削除
remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
remove_action( 'wp_head', 'wp_oembed_add_discovery_links', 10 );
// WordPressバージョン情報(wp_generator)を削除
remove_action( 'wp_head', 'wp_generator' );
// 短縮URL(wp_shortlink)を削除
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10 );
// 前後記事リンクとindex情報を削除
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
remove_action( 'wp_head', 'index_rel_link' );
削除してもSEOに影響しない?
| 項目 | SEOへの影響 | 削除してよい? |
|---|---|---|
| feed_links | なし | ○ |
| rsd_link | なし | ○ |
| wp_generator | なし | ○(セキュリティ的に推奨) |
| oEmbed | なし | △(SNS埋め込み使わないならOK) |
| wp_shortlink | なし | ○ |
| adjacent_posts_rel_link | ほぼなし | △(大規模ブログ以外なら不要) |
実際の <head> がどれくらいスッキリするか
before(初期WordPress)
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="...">
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="...">
<link rel="shortlink" href="...">
<link rel="alternate" type="application/rss+xml" title="RSS" href="...">
<meta name="generator" content="WordPress 6.2" />
after(整理後)
<title>サイトタイトル</title>
<link rel="stylesheet" href="style.css">
必要なタグだけ残り、軽量&セキュアでクリーンな head になる。
初心者がやりがちな失敗
| 失敗例 | 問題点 |
|---|---|
functions.php の最後に ?> を書く | 不要+エラーの原因になる |
| remove_action の優先度違いで効かない | 公式リファレンスのHook優先度を確認 |
| 子テーマで未反映 | 親テーマの functions が先に実行されている可能性 |
まとめ
| ポイント | 説明 |
|---|---|
| 不要タグは削除してOK | 使わない機能は読み込む必要なし |
| SEOへの悪影響はない | むしろセキュリティには良い効果 |
| functions.php に貼るだけ | プラグイン不要で手軽に最適化 |
