WordPressの投稿記事のタイトルや本文に使用されているテキストを、PHPのmb_convert_kana
を使って「半角から全角」また「全角から半角」に一括置換する方法のご紹介です。
functions.phpを編集しますので、functions.phpをサーバーへアップした段階で、すでに登録済みの投稿記事で半角→全角、もしくは全角→半角に全て置換されます。
全角英数字→半角 & 半角カタカナ→全角に変換
ご利用のテーマのfunctions.phpに以下のコードを追記します。
1 2 3 4 5 6 7 8 |
function convert_content( $data ) { $convert_fields = array( 'post_title', 'post_content' ); foreach ( $convert_fields as $convert_field ) { $data[$convert_field] = mb_convert_kana( $data[$convert_field], 'aKV', 'UTF-8' ); } return $data; } add_filter( 'wp_insert_post_data', 'convert_content' ); |
aKV
上記コードの4行目に記載しているaKV
は、mb_convert_kanaの以下の変換オプションを組み合わせたものです。
・a:「全角」英数字を「半角」に変換
・K:「半角」カタカナを「全角」に変換
・V:濁点付き文字を一文字扱いに変換
・K:「半角」カタカナを「全角」に変換
・V:濁点付き文字を一文字扱いに変換
全角スペースも半角に変換
全角スペースも半角に変換してしまいたい場合はasKV
を使います。
1 2 3 4 5 6 7 8 |
function convert_content( $data ) { $convert_fields = array( 'post_title', 'post_content' ); foreach ( $convert_fields as $convert_field ) { $data[$convert_field] = mb_convert_kana( $data[$convert_field], 'asKV', 'UTF-8' ); } return $data; } add_filter( 'wp_insert_post_data', 'convert_content' ); |
asKV
上記例の場合、変換オプションは以下のようになります。
・a:「全角」英数字を「半角」に変換
・s:「全角」スペースを「半角」に変換
・K:「半角」カタカナを「全角」に変換
・V:濁点付き文字を一文字扱いに変換
・s:「全角」スペースを「半角」に変換
・K:「半角」カタカナを「全角」に変換
・V:濁点付き文字を一文字扱いに変換
半角を全角に変換
あまり使うことはないかもしれませんが、半角の英数字やスペース、カタカナを全角に変換することもできます。
1 2 3 4 5 6 7 8 |
function convert_content( $data ) { $convert_fields = array( 'post_title', 'post_content' ); foreach ( $convert_fields as $convert_field ) { $data[$convert_field] = mb_convert_kana( $data[$convert_field], 'ASKV', 'UTF-8' ); } return $data; } add_filter( 'wp_insert_post_data', 'convert_content' ); |
ASKV
半角を全角に変換にする上記例の変換オプションは以下の通りです。
・A:「半角」英数字を「全角」に変換
・S:「半角」スペースを「全角」に変換
・K:「半角」カタカナを「全角」に変換
・V:濁点付き文字を一文字扱いに変換
・S:「半角」スペースを「全角」に変換
・K:「半角」カタカナを「全角」に変換
・V:濁点付き文字を一文字扱いに変換
変換の対象を投稿タイトルのみに制限
上記例ではpost_title
、post_content
のように投稿タイトルと本文を置換の対象にしていますが、post_title
だけを指定すれば投稿タイトルのみが変換されるようになります。
1 2 3 4 5 6 7 8 |
function convert_content( $data ) { $convert_fields = array( 'post_title' ); foreach ( $convert_fields as $convert_field ) { $data[$convert_field] = mb_convert_kana( $data[$convert_field], 'asKV', 'UTF-8' ); } return $data; } add_filter( 'wp_insert_post_data', 'convert_content' ); |
コメント