このブログはWordPressのテーマの「THE THOR」を使っています。英語版の記事も作っていて、WordPressで多言語対応するためのプラグイン「Bogo」を使っています。
Bogoには言語によってテキストを置き換える機能がありますが、サイトのタイトルとキャッチフレーズだけは常に日本語用のものが出力されてしまいます。そこで、子テーマのfunctions.php
を編集して、サイトとのタイトルとキャッチフレーズも多言語化されるようにしました。
この記事ではそのやり方を解説します。
サイトのタイトルを生成する処理
WordPressでサイトのタイトルを生成する処理は、pre_get_document_title
のフック関数で実装されています。親テーマの中を検索してみると、the-thor/inc/seo/title.php
ファイルの中でfit_title_document()
関数をフック関数に設定しているコードが見つかりました。
このフック関数を置き換えます。
子テーマでフック関数を置き換える
親テーマのファイルを編集してしまうと、テーマがアップデートしたときや調子が悪いときに戻すのが難しくなってしまうので、子テーマで親テーマのフック関数を置き換えます。
the-thor-child/functions.php
ファイルを編集します。
タイトルタグに出力する文字列の生成処理
Bogoで翻訳した後のタイトルとキャッチフレーズ、翻訳前のタイトルとキャッチフレーズを取得して、親テーマが生成したタイトルタグ文字列の中の文字列を置き換えて出力する処理を書きます。
次のコードをthe-thor-child/functions.php
に書きます。
function localize_title() {
ob_start();
bloginfo('name');
$localizedName = ob_get_clean();
ob_start();
bloginfo('description');
$localizedDescription = ob_get_clean();
$originalName = get_bloginfo('name');
$originalDescription = get_bloginfo('description');
$title = fit_title_document();
$title = str_replace($originalName, $localizedName, $title);
$title = str_replace($originalDescription, $localizedDescription, $title);
return $title;
}
次のような順序で処理しています。
- 翻訳されたタイトルを取得する
- 翻訳されたキャッチフレーズを取得する
- 翻訳前のタイトルを取得する
- 翻訳前のタイトルを取得する
- タイトルタグに出力する文字列を生成する
- 生成された文字列の中の、タイトルを翻訳後のタイトルに置き換える
- 生成された文字列の中の、キャッチフレーズを翻訳後のキャッチフレーズに置き換える
- 新しい文字列を返す
この処理は次の記事を参考に作成しました。
LIGのフロントエンドエンジニア・つっちーが、WordPressの多言語化プラグイン「Bogo」の機能を使った、サイトの…
フック関数を置き換える
作成したlocalize_title()
関数が実行されるようにフック関数を置き換えます。
次のコードをthe-thor-child/functions.php
ファイルに追加します。
function set_after_parent_theme() {
remove_action('pre_get_document_title', 'fit_title_document');
add_filter('pre_get_document_title', 'localize_title');
}
add_action('after_setup_theme', 'set_after_parent_theme', 20);
これで作成したフック関数が実行されるようになり、日本語版の記事のときは日本語のタイトル、英語版の記事のときは英語版のタイトルが使われるようになります。トップページのときはキャッチフレーズの文字列も言語によって変わります。
THE THORとBogoについて
「THE THOR」はWordPressの有料テーマです。HTML5+CSS3による最新のコーディングやAMPなどにも対応した高機能なテーマです。
詳しくは公式サイトをご覧ください。
集客・収益にこだわったWordPressテーマ「THE THOR(ザ・トール)」
「Bogo」は多言語対応するためのプラグインです。自動翻訳ではなく、各言語別の記事を自分で作ります。単純に翻訳しただけの記事を作ってしまうと、Googleは別言語のページではなく、重複コンテンツとみなしてしまうそうです。そのため、metaタグで言語別のページをリンクさせます。そういった作業を行ってくれるプラグインです。
詳しくはこちらです。
Bogo – WordPress プラグイン | WordPress.org 日本語
投稿者プロフィール

- macOS/iOSアプリ/SDK/ミドルウェア開発が専門の開発者
- アールケー開発代表。macOS/iOSアプリ/SDK/ミドルウェア開発が専門の開発者。ObjC/Swift/C++をよく使っています。開発実務経験を基に、教育コンテンツ開発、技術書執筆、技術指導、技術セミナー講師、企業内研修講師、行政・自治体職員研修講師も行います。
最新の投稿
NoneCategorized2021.02.25ブログ統合(予定)のお知らせ
アプリ開発2021.01.09SwiftUIの2つのライフサイクル
Web開発2020.12.03Language Switcher で発生する 302 リダイレクトの修正
Web開発2020.12.01WordPressのXML Sitemapsプラグインを動かす