質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

1191閲覧

PHPによるナビゲーションメニューの条件分岐 (WordPress)

Mr.Gentleman

総合スコア15

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2019/05/17 10:04

編集2019/05/18 13:39

前提

・現在会社でワードプレスを使用して、日本語・英語(テーマ "shopkeeper"、多言語プラグイン "Bogo")のウェブサイトを運営しています。
・サブディレクトリ方式をとっており、.com(英語)と.com/ja(日本)となっています。
・ナビゲーションメニュー(ヘッダーに表示される)は日本語と英語の2種類作成しています。
・メニューはメガメニューで作成しています。

Bogoはウェジェットメニューなどは、日本で表示・英語で表示とチェック項目があり、簡単に表示・非表示ができるのですが、ナビゲーションメニューに関しては、テーマの影響が関係しているのか、管理画面やカスタム画面のどこにも表示されません。

テーマの設定では、ナビゲーションメニューは1つ選ぶ選択肢しかありません。

実現したいこと

~.com/ja →メニュー1
~.com/ →メニュー2

PHPなどで、ディレクトリが~.com/jaの場合はこれを表示、~.comの場合はこれを表示と、サブディレクトリで条件分岐のような事はできるのでしょうか?

ちなみに現在、ヘッダーで条件分岐をさせる時、

<a href="https://www.instagram.com/" target="_blank" class="Instagram">  <?php   $locale = get_locale();    if ('en_US' == $locale ) {echo 'Instagram';}     else {echo 'インスタグラム';}?> </a>

上記のようにphpに記載して、対応しています。

該当のソースコード

phpを見ていると、おそらく下記のコードでナビゲーションメニューを表示させているとおもいます。

<nav class="show-for-large main-navigation default-navigation <?php if ( (isset($header_alignment)) ) echo esc_html($header_alignment); ?>" role="navigation">  <?php   $walker = new rc_scm_walker;    wp_nav_menu(array(    'theme_location' => 'main-navigation',    'fallback_cb' => false,    'container' => false,    'items_wrap' => '<ul class="%1$s">%3$s</ul>',    'walker'    => $walker )); ?> </nav><!-- .main-navigation -->

追記

これまでメニューはオフキャンバスメニュー方式にしており、多言語化に関しては、ダッシュボードなどで表示されるチェック項目を駆使して対応していました。

しかしヘッダーに表示されるナビゲーションメニューだけは、ダッシュボード→外観→メニューや外観→カスタマイズでメニューを設定する項目に行くと、なぜか多言語のチェック項目が出てこないです。

ナビゲーションメニューの現在の表示方法は、ダッシュボード→外観→メニューの一番下の欄にある、メニュー設定→メニュー位置からメインナビゲーションでどれか1つメニューを選択すると、ヘッダーに表示されます。(カスタマイズ画面でもチェック項目はあります)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Mr.Gentleman

2019/05/18 13:33

ありがとうございます。 そんなやり方があるんですね。 phpは多少しか分かっていませんが、試してみようと思います! 結果は後ほどお伝えします!
guest

回答1

0

通常のメニュー設定で右側に表示させたメニュー項目のプルダウン(表示させるメニュー内容のプルダウン)をクリックすると、そのメニュー項目を表示させる言語が設定できると思うのですが、それではダメでしょうか??

デフォルトの状態ではすべての言語でそのメニュー項目が表示されるようになっているので

例えば・・・
「日本語のメニュー」という名前のメニューを日本語の場合に表示させる場合にはチェックを日本語だけにする

「English」という名前のメニューを英語の場合に表示させる場合にはチェックを英語だけにする

ちょっとメニューがごちゃごちゃしてきますが、こうすれば特にテーマファイルをカスタマイズしなくてもいいかと思います。

※テストしてみただけですので明確な回答とは言えないかも知れませんが、これできちんとメニューは切り替えられました。

投稿2019/05/18 01:10

momosiri

総合スコア1509

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Mr.Gentleman

2019/05/18 13:40 編集

コメントありがとうございます! ウィジェット(サイドに表示されるオフキャンバスメニューやフッターウィジェット)に関しては、ダッシュボード→外観→ウィジェットで切り替える表示が出ますので、私もそれでやっています! そもそも今までメニューはオフキャンバスメニューにしており、チェック項目を駆使して日本、英語と対応していました。 しかし、ヘッダーに表示されるメニューだけは、ダッシュボード→外観→メニューや外観→カスタマイズでメニューを設定する項目に行くと、なぜか多言語のチェック項目が出てこないです。 ダッシュボード→外観→メニューの一番下の欄にある、メニュー設定→メニュー位置からメインナビゲーションでどれか1つメニューを選択すると、ヘッダーに表示されます。 ちょっとややこしくなっており、分かりにくいと思いますが、現状は上記のような感じです。 すみません!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問