WordPressのプラグインで勝手に挿入されるタグを削除する方法

初っ端から健康ネタじゃなくて、なぜかWordpressネタ。

このブログはWordpressを使ってます。
Wordpressはプラグインが強力なものが揃ってて使い勝手が非常に良いですね。

このブログでもいくつかのプラグインを使ってるんだけど、
記事の下に表示してる、はてなブックマークとかTwitterとかFacebookのボタンは

WP Social Bookmarking Light というプラグインを使ってます。

でも、このプラグイン、すごくいいんだけど、head タグ内に以下のようなスタイルの定義が勝手に挿入されてしまいます。しかもlinkタグによる外部の定義じゃないから結構ウザい。

<style type=”text/css”>
div.wp_social_bookmarking_light{border:0 !important;padding:0 !important;margin:0 !important;}
div.wp_social_bookmarking_light div{float:left !important;border:0 !important;padding:0 4px 0 0 !important;margin:0 !important;height:21px !important;text-indent:0 !important;}
div.wp_social_bookmarking_light img{border:0 !important;padding:0;margin:0;vertical-align:top !important;}
.wp_social_bookmarking_light_clear{clear:both !important;}
a.wp_social_bookmarking_light_instapaper {display: inline-block;font-family: ‘Lucida Grande’, Verdana, sans-serif;font-weight: bold;font-size: 11px;-webkit-border-radius: 8px;-moz-border-radius: 8px;color: #fff;background-color: #626262;border: 1px solid #626262;padding: 0px 3px 0px;text-shadow: #3b3b3b 1px 1px 0px;min-width: 62px;text-align: center;vertical-align:top;line-height:21px;}
a.wp_social_bookmarking_light_instapaper, a.wp_social_bookmarking_light_instapaper:hover, a.wp_social_bookmarking_light_instapaper:active, a.wp_social_bookmarking_light_instapaper:visited {color: #fff; text-decoration: none; outline: none;}
.wp_social_bookmarking_light_instapaper:focus {outline: none;}
</style>

このスタイルシートには問題点があって、なぜかほとんどの定義に「!important」がついている。つまり、上書きできないってこと。

これだと、ボタンの位置などをあまり自由に設定できない。

WP Social Bookmarking Light は非常に優秀なプラグインだと思うんだけど、これは問題だ。

このスタイルの定義はWordpressのheader内にある<?php wp_head?>で自動的に挿入されます。かといって、この<?php wp_head?>はWordPress多くのプラグインを動かすのに必須なので、勝手に消すことはできません。

これがあるとheader内に自動でlinkタグやmetaタグ等が挿入される仕組みだからです。

とはいえ、これらの勝手に挿入されるlinkタグやmetaタグを除去する方法は結構、いろんなサイトで紹介されてて、方法としては、functions.php をたとえば以下のように書き換えれば、linkタグ等が削除できます。

<?php
if ( function_exists(‘register_sidebar’) )
register_sidebar();
remove_action(‘wp_head’, ‘index_rel_link’);
remove_action(‘wp_head’, ‘parent_post_rel_link’, 10);
remove_action(‘wp_head’, ‘start_post_rel_link’, 10);
remove_action(‘wp_head’, ‘adjacent_posts_rel_link’, 10);
remove_action(‘wp_head’, ‘rsd_link’);
remove_action(‘wp_head’, ‘wlwmanifest_link’);
remove_action(‘wp_head’, ‘wp_generator’);
?>

じゃぁ、linkタグとかmetaタグじゃなくて、WP Social Bookmarking Light のようにスタイルの定義が勝手に挿入された場合、どうやって削除するか。

これは、単純にプラグイン内のスタイルシートを付与する関数を見つけ出して、その関数名を remove_action で指定してやればいい。

WP Social Bookmarking Light でスタイルシートを付与しているのは、

function wp_social_bookmarking_light_wp_head()

なので、これを

remove_action(‘wp_head’, ‘wp_social_bookmarking_light_wp_head’);

ってすればいい。これで消せる。

ただし、WP Social Bookmarking Light の場合は、”ほぼ” 問題ないと思われるが、他のプラグインの場合、その関数内でタグの挿入以外の処理をしてる場合は要注意です。


タグ

2011年5月7日 | Comments/Trackbacks(0)

カテゴリ: Wordpress

トラックバック&コメント

この投稿のトラックバックURL:

コメントをどうぞ

(必須: 上の画像に表示されている文字を入力してください)

このページの先頭へ