多言語化プラグイン「bogo」でメニューの日英切り替え実装メモ

多言語サイトにしようとするといくつかプラグインがあるけれど、Contact Form 7の作成者さんが公開されていたbogoというのがシンプルで使い勝手よさそうでしたので、試してみたときの備忘録。

参考にしたのはForumでのやりとりです。
How to translate menus?

スポンサーリンク

function.phpに以下を追加して追加メニューを登録できるようにする。

register_nav_menu( 'en_US_Top-menu',  'Top Menu En' );
function add_language_prefix($menu_identifier) {
    global $post;
    $language_prefix = get_post_meta( $post->ID, '_locale', true );
    return $language_prefix . '_' . $menu_identifier;
}
add_filter('language_prefix_menu', 'add_language_prefix');

Menuで英語版を作成
bogo_add_en_menu

header.phpでこんな風にメニューを書いているところを

<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu_class' => 'nav-menu' ) ); ?>

Localeによる条件分岐に変更します。

<?php $locale = get_locale();
	if ('en_US' == $locale  ) { ?>
<?php wp_nav_menu( array( 'theme_location' => apply_filters( 'language_prefix_menu', 'top-menu' ), 'menu_class' => 'nav-menu'  ) );?>
<?php } else { ?>
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu_class' => 'nav-menu' ) ); ?>
<?php } ?>

これで見事に英語のメニュー表示に成功しました。
bogo_fomplete_en

iPhoneから見ても、成功。
iphone_menu

同じ要領でSite Descriptionも出しわけできる。

ただ、カテゴリに記事がない場合、既存の固定ページがズラっと並んできたりする。
あと、YARRPも日本語記事が関連記事として出てくるのはどうにかならないものかな。

Language Switcherはウィジェットかショートコードで使える。
こちらが英語サイト(記事3つしかないですが・・・)
http://mylifeyourlife.net/en/

とりあえず何かの時のメモとして。


スポンサーリンク


多言語化プラグイン「bogo」でメニューの日英切り替え実装メモ」への3件のフィードバック

  1. はじめまして。
    Bogoでの多言語化で分からない事があり、
    検索していたら、こちらにたどり着きました。

    少々困り果てておりまして、もし、お分かりになれば教えて欲しいのですが…
    現在、Themeは、Sydneyを使用しています。
    Sydeneyのheader.phpのメニューの抽出コードは、以下になります。

    ‘primary’, ‘fallback_cb’ => ‘sydney_menu_fallback’ ) ); ?>

    これをコメントアウトし、Keijiさんがお書きになった条件分岐コードを挿入したところ、見事に英語ページでは英語メニューを表示するようになりました。しかし、なぜか、自分が作った英語メニューが表示されるのではなく、どうも、固定英語ページ全てをメニューとしており、また、順番もおかしな順序です。
    ちなみに、英語メニュー名は、Menu_En という名前を付けて保存しています。

    Menu_En を呼びだす方法はないでしょうか。

    1. わたなべさんこんにちは。
      随分以前の記事なので、今でもそのまま使用できるか不明なところはありますが、

      カテゴリに記事はありますかね?

      記事の最後の方にメモしてましたが、私も英語の記事そのものがなくて、固定ページがズラリと並んだ
      記録が残っています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)