WordPress タイトルと本文の全角英数字を半角に、半角カタカナを全角に強制的に変換する

WordPressサイトのブログや固定ページをを複数人で投稿する場合、知らないところで全角英数字や半角カタカナが混じってしまってる場合があります。これを避けるため、強制的に半角英数字、全角カタカナに変換する方法です。

全角英数字を半角に、半角カタカナを全角に変換するフィルターフック

<?php
add_filter('the_content', 'convert_characters');
add_filter('the_title', 'convert_characters');
add_filter('single_post_title', 'convert_characters');

function convert_characters($content) {
  return mb_convert_kana($content, 'aK');
}

解説

mv_convert_kana の第2引数で、何を何に変換するかを指定します。この場合、a は全角英数字を半角に、K は半角カタカナを全角に変換する指定です。

引っかける場所は3つ。 the_contentthe_title だけだとタイトルタグに反映されないので、single_post_title にも引っかけておく。

補足

この方法は、出力直前に変換しているだけで、データベースに変換されて保存されているわけではありません。例えば記事保存の直前に変換して保存させる方法(フック)もありますが、単に出力時に変換するにとどめた方が、チームで運用する際にはなにかとトラブルが少ないと僕は考えています。

参考文献