web-dev-qa-db-ja.com

1つのサイト、2つの異なるセクション:2つの異なるトップナビゲーションメニュー?

私は2つに分かれたサイトを持っています。同じテンプレートを(ルックアンドフィールの観点から)サイト全体に適用したいのですが、サイトの各「半分」に独自のトップナビゲーションメニューを持たせる必要があります。サイドメニューは使用されていません。

ホームページは、ユーザーをどちらか一方の側に誘導するカスタムページになります。

これを達成するにはどうすればよいでしょうか。

どうもありがとう

オースティン

3
Austen Osborne

最も簡単な解決策はクッキーを設定することでしょう。その後、メニューを印刷する前に、ユーザーのCookieを確認してください。

もう1つの解決策は、2つの部分に異なるURLがあるようにクエリ変数を追加することです。その後、メニューを印刷する前にクエリvarを確認します。この解決策は、2つの異なる部分のパーマリンクで可能になります。 (あなたが望むなら、あなたはきれいなURLを作ることができます)

1
offroff

wp_nav_menu() のカスタムメニューを使用してください。次に、パート1にいるのかパート2にいるのかを確認します。

if ( ! is_home() || is_front_page() )
{
    $args = array(); // Define your menu here
    $query_string = explode( '/', $_SERVER['REQUEST_URI'] );

    // You need to var_dump( $query_string ); 
    // to see which index/key is matching your requested query string part
    if ( 'PART_ONE' === $query_string[0] )
    {
        wp_nav_menu( array_merge( $args, array( 'menu' => 'MENU PART ONE' ) ) );
    }
    else
    {
        wp_nav_menu( array_merge( $args, array( 'menu' => 'MENU PART TWO' ) ) );
    }
}
1
kaiser

最も簡単な解決策は、Wordpressバックエンドに2つのナビゲーションメニューを作成してから、訪問者がいるページに基づいて異なるヘッダーを読み込むことです。

まずheader.phpを2回コピーして、3つのヘッダーファイルを作成します。例:header.php、headerA.php、headerB.php

さて、あなたのオリジナルのheader.phpを開いて、すべてのコードを次のようなものに置き換えてください:

<?php
if (is_page('contact')){
    <?php include(TEMPLATEPATH.'/headerA.php'); ?>
}
elseif (is_page('gallery')){
    <?php include(TEMPLATEPATH.'/headerB.php'); ?>
}
else {
    <?php include(TEMPLATEPATH.'/headerA.php'); ?>
}
?>

これは、訪問者がいるページのタイプに基づいて、どのヘッダをロードするかをWordressに伝えます。

また、必ず各ヘッダファイルに正しいメニューをロードしてください。

<?php wp_nav_menu( array('menu' => 'Menu A )); ?>
1
Travis Pflanz