アルコブログ TOP > WordPressの高速化とセキュリティ向上を両立させる施策まとめ
2016.11.21 アルコ編集部
WordPressの高速化とセキュリティ向上を両立させる施策まとめ
誰でも扱いやすいオールマイティーなCMSとして不動の地位を確立したWordPress、個人から企業まで多くのユーザがいます。用意された関数で挙動を制御でき、扱いやすさが人気となった理由のひとつでしょう。
しかし単純な関数で扱える反面、どうしてもHTMLのソースコードがゴチャっとしてしまう欠点があります。どんなテンプレートでも大抵含まれているwp_head関数、wp_footer関数は重要で欠かすことが出来ないのですが、場合によっては不要なタグが書き出されてしまったりするので、意図しないSEOで重要なlinkタグ等の出力を制御したい、そんなときのカスタマイズ方法について紹介します。
テンプレートに直接記述されているコードは編集、削除も簡単なのですが、wp_head関数やwp_footer関数といった関数を呼び出すことで制御されているフックされているタグについては、また別に手を加えなければ削除出来ません。
wp_head関数使わずに必要なタグを書いていけばいいとも思うのですが、プラグインがこの関数にフックしてJavaScriptやCSSを出力することが多いので、これら関数をテンプレート内で呼び出さないと正常に動かなくなる可能性があります。
テンプレート内のfunctions.phpに記述することで、そのフックされたアクションを削除することによって、意図しないコードを削除していきます。
フィードに関するlinkタグ
以下のようなlinkタグが出力されます。
<link rel="alternate" type="application/rss+xml" title="XXXX » フィード" href="http://xxxx/feed/" />
<link rel="alternate" type="application/rss+xml" title="XXXX » コメントフィード" href="http://xxxx/comments/feed/" />
<link rel="alternate" type="application/rss+xml" title="XXXX » Hello world! のコメントのフィード" href="http://xxxx/hello-world/feed/" />
様々なフィードがありますが、大抵は投稿に関するフィードのみ出力されれば良いはずなので、削除してしまいます。必要なフィードに関しては手動でテンプレート内に書き込みましょう。そもそも最近はフィードを使うことが主流でなくなってきていますし今後廃れていくものかもしれません。
(GoogleもGoogle ReaderやGoogle Feed APIなどのフィードに関するサービスを次々に終了させています)
// 投稿、コメントのフィードに関するlinkタグを削除
remove_action( 'wp_head', 'feed_links', 2 );
// カテゴリごと、タグごと、投稿者ごと、検索のフィードに関するlinkタグを削除
remove_action( 'wp_head', 'feed_links_extra', 3 );
generator
バージョンいくつのWordPressで動いているか出力されます。
<meta name="generator" content="WordPress x.x.x" />
過去のWordPressには深刻な脆弱性があり、それらは攻撃に使われることも多いです。伏せておける情報は伏せておきたいところです。
悪意のある人に情報を与えるだけなのでこのタグは完全に不要でしょう。こんな情報がなくても攻撃は出来てしまうものですが…百害あって一利なし、少しでもリスクを減らすために削除しましょう。
// generatorを削除
remove_action( 'wp_head', 'wp_generator' );
shortlink
投稿IDのクエリ付きのURLが出力されます。長いパーマリンクを設定していても、このURLで記事にアクセスすることが出来ます。
<link rel='shortlink' href='http://xxxx/?p=1' />
パーマリンク設定している場合は設定したURLにリダイレクトされますが、この短縮URLを使わないのであればbotがこの値を参考にするかは分かりませんがURLの重複を避けSEO的にも削除しておきたいタグ。
// link shortlinkを削除
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );
EditURI
XML-RPCという規格を使用して、WordPressに記事を投稿する際に使用するタグが出力されます。
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://xxxx/xmlrpc.php?rsd" />
この機能を使う予定がないのであれば、削除してしまって大丈夫です。
// link rel EditURIを削除
remove_action( 'wp_head', 'rsd_link' );
wlwmanifest
Windows Live Writerというマイクロソフトのブログ投稿編集アプリケーションに必要なタグが出力されます。
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://xxxx/wp-includes/wlwmanifest.xml" />
Office製品のようにブログの記事を書けるアプリケーションのようですが、使う予定がなければ削除してしまいましょう。
// link rel wlwmanifestを削除
remove_action( 'wp_head', 'wlwmanifest_link' );
canonical
重複するページがある場合、検索エンジンに重複コンテンツであると明確に伝えることで評価の低下を避けるために使用するlinkタグrel属性canonicalの値をwp_head関数は出力します。
<link rel="canonical" href="http://xxxx/xxxx/" />
適切に出力してくれる分には大変ありがたいのですが、自分で意図的に設置したい場合などに不要なcanonicalが出力されてしまうことによってSEO的によくない評価を受けてしまうことを避けます。
wp_head関数で自動的に出力させると投稿ページに同URLへのcanonicalという不要なcanonicalが出力されてしまうので、スマートにするためにも出力されないように設定して必要なところに適切に設定しましょう。
// link rel canonicalを削除
remove_action( 'wp_head', 'rel_canonical' );
link rel=”prev” link rel=”next”
wp_head関数にフックされているadjacent_posts_rel_link_wp_head関数は前の投稿に対してprev、次の投稿に対してnextの値を持つタグを出力します。
prevとnextの値は本来、例えばnextの値が入るのはその記事の2ページ目といったページネーションされているページに対して使用されるものであって、次の記事や前の記事がその記事に対して全ての場合において適しているものとは言えません。その記事に続いている内容である場合は良いのですが、通常のBlog記事などの場合はそうでもないと思いますので削除します。
ブラウザのFireFoxがnextのURLへアクセスする機能を有しているようで、場合によっては負荷が増えることが考えられます。先読みして読み込みを早くするらしいので良いとも悪いとも言い難いですが、気になるようだったらやはり削除しておくのが望ましいでしょう。
// link rel prevとnextを削除
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
WordPress 3.3.0より以前のものの場合、rel=”index”、rel=”up”、rel=”start”というlinkタグも出力されるのでこちらも削除するには
// link rel indexを削除
remove_action( 'wp_head', 'index_rel_link' );
// link rel startを削除
remove_action( 'wp_head', 'start_post_rel_link', 10 );
// link rel upを削除
remove_action( 'wp_head', 'parent_post_rel_link', 10 );
絵文字関連のjsとcss
WordPress 4.2から投稿に絵文字が使えるようになりました。絵文字を使わないのであれば削除してしまってもよいでしょう。
// 絵文字出力のためのjsを削除
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
// wp_head関数ではないが、上のjsを削除するならcssも不要
remove_action( 'wp_print_styles', 'print_emoji_styles' );
さらにWordPress 4.6からはdns-prefetchというlinkタグが出力されるようになりました。
<link rel='dns-prefetch' href='//s.w.org' />
予め外部のURLに対し強制的に名前解決を行っておくことによって表示が早くなる、というものです。
DNS プリフェッチの制御
絵文字関連でCDNに対するdns-prefetchが出力されるようになっているので、絵文字を使わない場合はこれを削除しても構わないでしょう。
// 絵文字関連のdns-prefetchを削除
add_filter( 'emoji_svg_url', '__return_false' );
oEmbed関連
WordPress 4.4で「oEmbed」という機能が追加されました。他のWordPress等でURLを投稿するだけで記事のタイトルや抜粋、アイキャッチを埋め込めこむことが出来ます。このような仕組みは最近SNSでよく見かけますね。埋め込まれた場合は視覚的にも目立ちますし、ユーザの流入数増加も望めます。
残していても良いと思いますが、アクセスの多いサイトに埋め込まれた場合、こちらのサイトへの負荷も大きくなります。
これらメリットやデメリットを検討して不要な場合は削除してしまいましょう。
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
remove_action( 'wp_head', 'rest_output_link_wp_head' );
// wp_head関数ではないが、embedを停止するなら不要になる
remove_action( 'template_redirect', 'rest_output_link_header', 11 );
これら関数のフックを外したらだいぶhead内がスッキリしたのではないでしょうか?
ちなみにWordPressの標準テンプレートである「twentysixteen」に上記の施策を行う前と行った後のhtmlのhead内を見てみると…
↓↓
かなりスッキリしましたね。そのサイトに対して意味のないタグは存在していても気持ちが悪いですし、負荷が増える原因にもなってしまいます。
不要と判断したものは外す方が、高速化、SEO、セキュリティの面でみてもメリットがあります。
この記事の著者
定期購読
最新記事
- 2017.06.01 検索順位で業績が予想できそうなGameWithの一本足打法的ビジネスモデルとSEO
- 2017.03.22 すぐに使えるPHPコード実例付き!サーチコンソールAPIの扱い方
- 2017.02.17 【大規模ウェブサービス向け】低コストに100万ページ以上のSEO LPを増やす施策の劇的効果と注意点
- 2016.11.21 WordPressの高速化とセキュリティ向上を両立させる施策まとめ
- 2016.11.14 センス不要!「伝える」に特化したブログ画像をPowerpointで作ろう
- 2016.11.07 たった4ヶ月で検索流入が2倍になったDeNA社運営のキュレーションメディア“CAFY”のSEO対策とは?
- 2016.10.31 実録タグ図鑑~これはコンバージョンタグ?計測タグ?タグの種類と実際のタグ見本新旧45本総まとめ+α!
- 2016.10.24 ノンエンジニアでも実践できるサイト高速化施策まとめ
- 2016.10.17 丸投げOK!ワードプレス(wordpress)でオウンドメディアを作る際の仕様書テンプレート※ダウンロード可
- 2016.10.12 PIXTA(ピクスタ)の営業利益率を昨対比で50%以上押し上げたSEO施策とは?
- 2016.10.03 SEOのために月500万を超える予算で記事を作り続けてわかった一つのこと
- 2016.07.27 SEOの舵取りミスによって年商数億円の新規事業が一瞬でゼロになった日
- 2016.07.15 10年間SEOコンサルティングをしてきた人間が『当時の自分は本当にどうかしていた』と語るコンテンツを活用したSEOの大失敗事例
- 2016.06.29 SimilarWeb(シミラーウェブ)で他社のPVがなんとなくわかった。じゃあ次どうしよう?という方に伝えたい競合調査ツールとの付き合い方
- 2016.06.27 リニューアルによって月間粗利300万近くの成果を創出できたことでわかったUI改善のポイント
- 2016.05.20 アップルミュージックの課金率は約50%、LINE MUSICは5%以下
- 2016.04.01 HOME’Sを運営するネクスト社が出資した北米不動産メディアZumperの極端なSEO
- 2015.09.09 月間17億PVの海外版ハフポストの成長要因はSEO
- 2015.09.08 サーチコンソール(Google Search Console)を使って999件以上の検索ワード・クエリデータを取得する方法
- 2015.03.11 インターネットで保険を販売するビジネスモデルのライフネット生命はスマートフォンが普及するとなぜ新規契約者数が伸び悩むのか?
人気の記事
- 投稿日付 2012.06.11【ECサイト SEO対策研究】Zappos(ザッポス)SEO研究(2) コンテンツユニーク化について
- 投稿日付 2012.07.02SEO対策でビッグキーワード集客を成功させる方法~Googleアルゴリズム研究~
- 投稿日付 2012.07.20SEO対策でビッグキーワード集客を成功させる方法②~Googleアルゴリズム研究~
- 投稿日付 2012.07.25ABテストは 「C」を見つけるためにある
- 投稿日付 2012.08.17「数打ちゃ当たる」のABテストがうまくいかない理由
- 投稿日付 2012.08.28実はコンバージョンレートに響く9つの要因
- 投稿日付 2012.09.11価格.com研究ビジネスモデル編|食べログ・ぐるなび比較|
- 投稿日付 2012.09.20価格.com研究SEO編|食べログ・ぐるなび比較|
- 投稿日付 2012.10.16企業ブログから問い合わせをガンガン集める方法【インバウンドマーケティング成功事例と失敗事例】
- 投稿日付 2012.10.17インバウンドマーケティングという言葉の定義
カテゴリ
- SEO事例研究 (32)
- その他 (15)
- ビジネスモデル事例研究 (15)
- ユーザビリティ・UI・UX事例研究 (22)
- ユーザビリティテスト (13)
- ユーザビリティ比較 (4)
- 企業研究 (6)
- 未分類 (13)