WordPressのwp_title()でセパレータ前後に妙な空白が入る件!

WordPress

先日、お客さんのサイトをWordPressで構築し、通常の投稿ページと固定ページの「title」部分を以下のように「wp_title」で設定していました。

<title><?php wp_title('|', true, 'right'); ?></title>

上記のテンプレートタグの表示結果なんですが、当サイトを例に挙げれば、以下のように表示されます。

↓ソースを確認すると、こんな感じ。

最初の第一パラメータで「|」で区切る指定をし、第二パラメータでタイトルを表示するので「true」、第三パラメータで区切り文字表示位置を「right」に指定しています。

ここで表示結果を見て頂きたいのですが、どういう訳か記事を区切っている「|」の前後に妙な空白が入っています。

↓この「|」の前後の空白です。

本当に細かいことなんですが、これが気になってしょうがないです。この妙な空白を何とかする方法を解説します。

「functions.php」にコードを追加するだけで対応できます。

wp_title()の空白を削除する手順

「functions.php」にコードを追加

「functions.php」に以下のコードを追加してください。

//wp_titleの$sepが「|」または半角スペースの場合は余分な空白削除
function my_title_fix($title, $sep, $seplocation){
    if(!$sep || $sep == "|"){
        $title = str_replace(' '.$sep.' ', $sep, $title);
    }
    return $title;
}
add_filter('wp_title', 'my_title_fix', 10, 3);
念のために「functions.php」のバックアップを取っておいて下さい。記述ミスするとサイトが見えなくなる可能性があります。すぐに戻せるようにバックアップは取っておきましょう。

実際にソースで確認

↓確認してみるとセパレータ前後の空白が削除されていました。

最後に

細かいことですが、無事に解決して良かったです。でも何故こんな仕様になってるんでしょうか。不思議です。私と同じように細かい空白が気になる方は、ぜひお試しください。

以上「WordPressのwp_title()でセパレータ前後に妙な空白が入る件!」でした!

それではまた。

コメント