当サイトにWordPressの多言語化プラグイン「Bogo」をインストールして多言語化を進めています。
多言語化を進めるにあたり、先にインストールしているプラグインの影響で多言語化を進めるのに少し苦戦している箇所がありました。それはSEOのプラグインでも有名な「All in One SEO」プラグインです。
Bogoの設定で言語を設定していてもtitleタグやdescriptionタグが日本語のままで多言語が反映されない、ということに気がつきました。
そこで調べてみますとAll in One SEOで用意されているフィルターフックを活用してタイトルタグの書き換えが可能ということがわかりましたのでその備忘録となります。
WordPress 5.8.1、All in One SEO バージョン 4.1.4.4、オリジナルのテーマを使って検証しています。お使いのWordPressのテーマ・プラグイン・バージョンによっては正常に動作しないことも考えられますので、ソースコードを編集する場合は必ずバックアップを行ってから作業してください。
All in One SEOのフィルターフック「aioseo_title」「aioseo_description」を使う
All in One SEOで使うことができるフィルターフックは以下のURLにて確認することができます。
- Filter Hooks – AIOSEO
https://aioseo.com/doc-categories/filter-hooks/ - aioseo_title – AIOSEO
https://aioseo.com/docs/aioseo_title/
aioseo_title フィルターフック
aioseo_titleフィルターフックにより、サイトタイトルを書き換える方法です。
function aioseo_filter_title($title) {
ob_start();
bloginfo('name');
$localizedName = ob_get_clean();
$originalName = get_bloginfo('name');
return str_replace($originalName, $localizedName, $title);
}
add_filter( 'aioseo_title', 'aioseo_filter_title', 10, 1 );
aioseo_description フィルターフック
aioseo_titleフィルターフックにより、サイト説明文を書き換える方法です。
function aioseo_filter_description($description) {
ob_start();
bloginfo('description');
$localizedDescription = ob_get_clean();
$originalDescription = get_bloginfo('description');
return str_replace($originalDescription, $localizedDescription, $description);
}
add_filter( 'aioseo_description', 'aioseo_filter_description', 10, 1 );
上記のソースコードは参考サイトに掲載されている内容を参考にさせていただきました。bloginfo関数では翻訳後の値が、get_bloginfo関数では翻訳前の値が取得されるということ、それを利用してstr_replaceにて文字列を書き換えするテクニックが紹介されており、とても参考となるソースコードです。
さらに、参考サイトではAll in One SEOと並び人気のSEOプラグイン「Yoast SEO」についても記載されていますので、Yoast SEOをお使いの方は参考サイトをご確認ください。
参考サイトではフィルターフック aioseop_title とされていますが、All in One SEO バージョン 4.1.4.4では aioseo_title に変更されています。All in One SEOプラグインのバージョンによってフィルターフック名が異なりますので、お使いのAll in One SEOのバージョンをご確認の上、使い分けてください。
参考にしたサイト
- サイトのタイトルやキャッチフレーズをBogoによって多言語化する方法 | 株式会社LIG
https://liginc.co.jp/486679
コメント