はじめに
ブログを書いていると、時々映画や小説の作品名を『(タイトル)』で書くのですが、このようなものは<cite>タイトル</cite>で囲った方が良い?ようなことを読みました。
しかし、既に書いてあるものは一括置換するとして、これからこの書式を忘れずに書いていく自信もありません。
『(タイトル)』の本文をHTMLにする際に自動的に『<cite>(タイトル)</cite>』にしてくれないものか、と考え、作りました。
『』のカッコの箇所が《》だったり、【】だったりする方はご自身でお書き換えください。
(前回、<h1>タグまで変換されたのが良くなかったようで、修正しました)
functions.php
function wrap_cite_tags( $content ) {
// 『タイトル』を『<cite>タイトル</cite>』に変換
$content = preg_replace_callback('/(<\/code><h1><code>.*?<\/h1>)|『(.*?)』/u', function ($matches) {
if (!empty($matches[1])) {
return $matches[1];
}
return '『<cite>' . $matches[2] . '</cite>』';
}, $content);
// h1タグ内では変換しない
$content = preg_replace_callback('/<h1>(.*?)<\/h1>/u', function ($matches) {
return '<h1>' . $matches[1] . '</h1>';
}, $content);
// その他のHTMLコードでは変換する
$content = preg_replace_callback('/<([^h1>]+)>(.*?)<\/\1>/u', function ($matches) {
return '<' . $matches[1] . '>' . preg_replace('/『(.*?)』/u', '『<cite>$1</cite>』', $matches[2]) . '</' . $matches[1] . '>';
}, $content);
return $content;
}
add_filter( 'the_content', 'wrap_cite_tags' );
コードスニペットプラグインを使う
functions.phpを直接編集するのは怖いです。
そこでお勧めしたいのが、Code Snippetsプラグインです。
インストールして有効化しましたら、新規追加で下記のようにコードをコピペします。
ここでサイトのセキュリティにてWAFがOnになっていると下記のようなエラーメッセージが表示されて保存ができません。
この場合は、レンタルサーバーにログインして更新する時にWAFの設定を一時的にOffにします。
確認の仕方
記事のプレビューを表示させて、『タイトル』箇所で右クリックをし、メニューを表示させますと、最下行に「検証」とありますのでクリックします。
下記画面のように『タイトル』箇所のHTMLソースコードが<cite>~</cite>で囲まれていることが確認できます。