多言語対応プラグインBogoのカスタマイズ方法まとめ
私のポートフォリオサイトを多言語対応する際にBogoを使用しました。その際必要だったカスタマイズのコードを下記にご紹介します。
カスタム投稿への対応
デフォルトではカスタム投稿に対応していないので、function.phpに下記のコードを記述します。
function my_localizable_post_types( $localizable ) {
$custom_post_types = array('works-web','works-graphic'); // 自分のカスタム投稿タイプ名を入れる
return array_merge($localizable,$custom_post_types);
}
add_filter( 'bogo_localizable_post_types', 'my_localizable_post_types', 10, 1 );
すべての投稿タイプに対応したい場合は以下のコードを記述します。
function my_localizable_post_types( $localizable ) {
$args = array(
'public' => true,
'_builtin' => false
);
$custom_post_types = array_values(get_post_types( $args ,'names','and'));
return array_merge($localizable,$custom_post_types);
}
add_filter( 'bogo_localizable_post_types', 'my_localizable_post_types', 10, 1 );
下記の記事を参考にしたのですが、使っているバージョンではエラーになってしまったので(2020年12月)とりあえず動くように書き換えました。上の手動入力の方が安全なのかもしれません(?)
get_postsで取得しているカスタム投稿を言語選択している言語のものに限定する
こちらのフォーラムにやり方が解説されています。私も実際カスタム投稿をget_postsで取得していたので助かりました。パラメータを1行追加するだけでOKです。ハッピーですね。
$posts = get_posts(array(
//もともと設定しているパラメータ
'suppress_filters' => false // 左記のパラメータを追加
));
言語切替ボタンのショートコードをカスタマイズする
下記の記事に詳しく載っています。
wordpressのbogoプラグインのショートコードをカスタマイズする
国旗の表示・非表示
国旗を非表示にしたい場合はfunction.phpに以下のコードを記述します。
add_filter( 'bogo_use_flags','bogo_use_flags_false');
function bogo_use_flags_false(){
return false;
}
言語名の書き換え
「日本語 | English」を「 JP | EN」という表記にしたかったので無理やり書き換えます。
add_filter( 'bogo_language_switcher','replace_bogo_text');
function replace_bogo_text($output){
$output = str_replace('English','EN',$output);
$output = str_replace('日本語','JP',$output);
return $output;
}
無理やりではなくちゃんとやりたい場合は、プラグインからコードをコピーしてきてショートコードを上書き(もしくは別の名前で新規登録)するといいようです。
テンプレート内で言語ごとに表示を変える
これは試してないですが、こちらの記事(テンプレート内で言語ごとに表示を変える)に載ってます。使うことがありそうなのでメモさせていただきました。
サーバアップ時のエラー
これは私が実際に体験したことなのですが、以下の条件でサーバーアップ時にうまくいきませんでした。
1.ローカルでサイトにBogoを導入
2.プラグイン「All-in-One WP Migration 」でローカルのサイトをエクスポート
3.プラグイン「All-in-One WP Migration」を使ってBogo導入後のサイトをインポート→英語ページが404エラーになってしまうエラーが発生
これは原因は謎ですが、新規作成したWordpressサイトにインポートしたところうまくいったので、サイトのデータベースを新規作成してインポートし直すという荒業で導入しました。データベースの上書きがどこかでうまくいっていなかったということなのでしょう。運用中のサイトに導入する場合は危険なのでバックアップを取って一度テストしておくといいと思います。
以上です。
他のプラグインと比較した記事は下記です。