お手軽WordPress Tips:記事内やコメント欄内の特定のキーワードを任意のテキストやリンク等に一括置換する

Ads

ちょっと久しぶりですけどWordPressの
カスタマイズTips記事です。今日はプラ
グインを使わず、記事内の特定のキーワ
ードに自動で何か加わるようにしようと
いう内容。一応簡単なWikiっぽいものも
作れるっちゃ作れます。

ちょっと分かりにくいんですけど、指定したキーワードを好きなものに置換するっていうコードです。なのでアイデア次第でいろいろ出来るっちゃ出来るんですけど、行儀の良いコードではないので痒いところに手を届けたい時にでも使ってください。

コード

functions.phpに含めます。

function change_any_texts($text){
	$replace = array(
		//'変更前' => '変更後'
		'CSS' => '<a href="#">CSS</a>',
		'tool' => '<strong>tool</strong>'
	);
	$text = str_replace(array_keys($replace), $replace, $text);
	return $text;
}
add_filter('the_content', 'change_any_texts');

上記のコードならcssというキーワードが全て

<a href="#">CSS</a>

に置換され、記事内(the_content内)でのtoolというキーワードが全てstrongタグで強調されます。

赤い文字がリンクで、太文字の部分がstrongです↓

数少ない用途を考えてみる

このコードでいろいろ思いつく限り遊んでみようじゃないかっていうのが今日の内容です。

禁止ワードを置換

別にタグじゃなくても別のキーワードにも出来るのでマルチユーザーサイトで、禁止ワードを指定して別のものに置換、とか出来ます。でもこの方法じゃキリがないかな。

	$replace = array(
		'死ね' => '愛してるよセニョリータ'
	);

簡易Wiki

簡易的なwikiにも使えます。キーワードを指定して予めそのキーワードの解説ページを作るのもいいかも。タグのリンクに変えてツールチップでも出してあげるとかでも良いですかね

$replace = array(
		'釣り' => '<a href="http://example.com/tags/fish/" class="tips" title="「釣り」のタグの付いた記事一覧を見る">釣り</a>',
		'ボート' => '<a href="http://example.com/tags/boat/" class="tips" title="「ボート」のタグの付いた記事一覧を見る">ボート</a>'
	);

ただし、これはちょっと問題、というか無理があってですね。

例えば記事でパーマリンクを既に指定していても強制的に置換しますので以下のようになっちゃいます。

<a href="http://example.com/tags/boat/" class="tips" title="「ボート」のタグの付いた記事一覧を見る"><a href="http://boat.com">ボート</a></a>

また、パーマリンク内のキーワードも置換してしまいます。例えば

$replace = array(
		'CSS' => '<a href="#">CSS</a>'
	);

としていたとして、

<a href="/css/tips.html">その記事はこちら。</a>

ってあった場合にも

<a href="/<a href="#">css</a>/tips.html">その記事はこちら。</a>

とかに変えちゃいます。

これをどうにかするくらいなら最初からプラグイン使うので、まぁお手軽WordPress Tipsとはそんなものだと認識してください。

アフィリエイトとかに使う

一応こんなんも出来ますよっていうやつ。

$replace = array(
		'スマートフォン' => 'スマートフォン(→<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4883377245/***-22/ref=nosim/" target="_blank">Amazonで書籍をチェック</a>)'
	);

ショートコード代わりに使う

普通にショートコードAPI使えよって話ですが。

$replace = array(
'アドセンス貼る!' => '<script type="text/javascript"><!--
google_ad_client = "pub-***";
google_ad_slot = "***";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>'
	);

アドセンス貼る!って本文中に書けばそこがアドセンスに変わります。なんの意味があるんですかねw

コメント欄のキーワードも置換したい


フック変えればいいだけ。

function change_any_comment($comment) {
	$replace = array(
		'死ね' => '*****'
	);
	$comment = str_replace(array_keys($replace), $replace, $comment);
	return $comment;
}
add_filter( 'get_comment_text', 'change_any_comment' );

get_comment_textでダメならpre_comment_contentにしてみてください。フィルターフック一覧見てテーマファイルと照らし合わせればすぐ分かると思います。

まぁいろいろ出来ますよって話でした。途中で注意書きしましたけど、例外なくキーワード全て指定のものに置換するので利用には十分お気をつけて。