WPのhead内重複・不要metaを削除する方法

4 分で読めます。投稿から 7年。最終更新から 1年経過。
この記事の作成に約 58 分かかりました。

heder.php内<?php wp_head()?>は様々なタグをを書き込みます。ビジター向けと考えればおおむね必要な要素なんですが、中には管理者向けの要素もあり、まったく必要ない人には必要ないタグです。
たとえば、この二つは他のソフトでブログを管理するときに使うタグなので、自分には必要なし。

link rel=”EditURI” type=”application/rsd+xml” title=”RSD”
link rel=”wlwmanifest” type=”application/wlwmanifest+xml”

これも消します。

link rel="shortlink"

個別記事のタイトルに日本語を使っていた場合、かなりURLが長くなります。あまり長いと、たとえば何かのサイトにリンクを打ち込む場合に長すぎて受け付けられない可能性があります。でその際は、この短いURLを使ってくださいという要素です。短いURLとはデフォルトのpost idを利用したものですので確かに短いです。でも、うちには必要なし。

あとは、いろいろありますが、自分的には何かに使われる以上残しておきたいので残す気持ちです。
なのですが、重複する必要はないですよね。
個別記事のほうで<?php wp_head()?>ではなく何かのプラグインかテーマの影響で下の三つの項目が出力されて、php wp_head()もそれらを出力するので二重出力となっていました。

link rel="prev"
link rel="next"
link rel="start"

ということで、<?php wp_head()?>がEditURI・wlwmanifest・shortlinkと上の三つの要素を吐かないようにします。
まず、テーマ編集からfunctionphpを開いて一番下の?>のその上に、以下のように記述を追加します。


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

add_filter( 'previous_post_rel_link', 'disable_stuff' );
add_filter( 'next_post_rel_link', 'disable_stuff' );
add_filter( 'start_post_rel_link', 'disable_stuff' );
function disable_stuff( $data ) {
return false;
}


上の三つはremove_actionを使って指定の要素を取り除くというPHPのコマンドです。
下のは要素のフィルターを作り、その値にfalseを返して無効化するというコマンドになります。
remove_actionで取り除くのが定番のようだったのですが、消えるとされる要素を入れてもpreとnextはきえませんでした。
なので、本家のWPのフォーラムで探したら下のが見つかりました。そこにはremoveでもpre・nextは消えるように書かれていましたが、試したところ下の方法でしか消えませんでした。

これで、個別記事のpre・nextがそれぞれひとつ出力されるようになりました。
もし、二重出力されていなかったらわざわざ消す要素じゃないとおもいます。頼りに前後のページに移動できるブラウザのアドオンもあるみたいですし。

あと、link rel=”alternate” media=”handheld”というのが気になりました。というのも、携帯向けのURLを紹介しながらもそれはパソコン版とまったく同じURLだったからです。KtaiStyleは同じURLで違う内容を見せるというプラグインだからそうなっているのですけど、同じなら意味なくね?と思ったのです。でも調べてみるとその要素はKtaiStyle自身が吐いているみたいなので、それなら意味があるだろうと思いそのままにしています。

■追記
2011/03/11プラグインのHead Cleanerでもこれら要素を消しています。お手軽です。しかもかなりCSSとJSがまとめられたりと高機能で素晴らしいプラグインです。ですけど、今は使ってません。

スポンサーリンク
レクタングル大