web-dev-qa-db-ja.com

特定のページにのみメニューを表示する方法を教えてください。

サイドバーウィジェットを使用してどのページを表示するかを指定するのではなく、特定のページに表示されるメニュー設定を選択するのが好きです。

デフォルトのWordpressの方法:

How it looks default

だからプロジェクトはページであり、いくつかのサブページがあります。しかし、同じ状況でこれらのページやサブページをさらに10個好きになったとしたらどうでしょう。

追加設定(トップレベルページのリスト)を追加したいです。

Where I want the setting

しかし、これらの設定がロードされていると、ドキュメント、アクション、フィルタなどが見つかりません。

9
user40422

それはいい選択ですが、私はsriに同意します、今それは本当にあなたのテーマ次第です。 is_page() を使用して回避策をとることができます。 page.php テーマファイルに次のように書く必要があります。

<?php
    if (is_page('projects')) {
        if ( is_active_sidebar( 'sidebar-navigation' )) {
            dynamic_sidebar( 'sidebar-navigation' );
        }
    }
?>

サイドバーを他のページにも表示したい場合は、次のようにロジック または を使用できます。

if (is_page('projects') || is_page('home') || is_page('post-page'))
3
Bernie

私はこのスレッドが古くなっていることを知っていますが、誰かがこの答えを探す必要がある場合に備えて、themify https://themify.me/conditional-menus から条件付きメニューを提案したいと思います。ページ、カテゴリ、メタ、その他すべてについて、使用するメニューを選択します。そして、それは無料です。

1
rosane

これは子テーマにコピーした二十二のテーマheader.phpでどのようにできるのかです。

<?php if ( is_page('projects') ) : ?>
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu' => 'conditional-menu-name', 'menu_class' => 'nav-menu' ) ); ?>
<?php else : ?>
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu' => 'Primary', 'menu_class' => 'nav-menu' ) ); ?>
<?php endif; ?>

表示したい項目で新しいメニューを作成し、上記のコードの条件付きメニュー名をメニュー名と入れ替えます。

menu_classの名前は、Twenty Twelve以外のテーマでは変更が必要な場合があります。

出典

1
Brad Dalton

これにはプラグインを使用する方が良いと思いますので、将来テーマを変更しても機能を維持することができます。このプラグインをチェックしてください。それはあなたが望むものを行いますが、あなたがそれをモックアップした方法とはわずかに異なります。

https://wordpress.org/plugins/page-specific-menu-items/ /

これで問題が解決した場合は、投票を増やすか、回答として承認してください。ありがとうございます。

1
Mark.C

一つの選択肢はあなたが持っているそれぞれのメニューのためのカスタムテンプレートを作ることでしょう。 (それはテーマの場所のチェックボックスを参照します)それから、あなたはそれが使用したいテンプレートを選択し、そしてそれはそのテンプレートに関連したメニューも使用します。

https://codex.wordpress.org/Page_Templates

それはあなたが私があなたが探していると思うのと同じ結果を与えるが、それがどのページに表示されるのかを各メニューに伝えるのではなく、あなたは各メニューにそれにどのメニューが表示されるのかを伝えるだろう。この方法でこれを行うことの追加の利点は、あなたが偶然に2つのメニューを同時に同じ場所にあるように言う方法がないということです。

0
KnightHawk

ウィジェットを再接続して簡単な解決策が必要な場合は、Display Widgetsというプラグインを使用できます。私はこれを使い、あなたが行きたい場所へのリンクを追加できるテキスト部分を使います。リンクがあなた自身のサイトにあるか、他のサイトにあるかに関係なく動作します。表示または非表示にするページを選択できるテキストの下にスペースがあります。まだ使用していないウィジェットを削除することはできます。

このプラグインを探して見つける前に、私はかなりの時間メニューで遊んだ。それはうまくいきます。

WordPress.orgのPluginsセクションにあります。

0
Susan