web-dev-qa-db-ja.com

wp_nav_menu()がカスタム検索ページで機能しない

私はWPカスタム検索プラグインを使用して、私の新しく開発した検索方法のいずれかで詳細検索を生成しています WP サイト。このプラグインは完全にバグがないわけではありませんが、うまく機能しています(いくつかの未定義オフセット警告を除いて、検索でのサポートの向上のために無視しています)。

しかし最近、私が検索ページにいるときにheader.phpwp_nav_menu()が機能していないことに気づきました。それは私の WP サイトの多くで使われているように単純なコードです:

<?php wp_nav_menu( array( 'theme_location' => 'header_menu', 'menu_class' => 'site-header-menu' ) ); ?>

これは他のすべてのページにも適用されますが、search.php - 典型的な検索テンプレートです。

私は最も引用された解決策を試してみました:

通常、検索ページのURLには?s=が含まれていますが、このプラグインを使用すると、次のようになります。

http://example.com/?search-class=DB_CustomSearch_Widget-db_customsearch_widget&widget_number=preset-1&[search_queries_and_conditions]=&search=Search

それは私がメニューをエコーし​​ていない原因ですか? ( ライブサイトはこちら 、詳細検索は左側にあります)

2
Mayeenul Islam

Miloが述べたように、それはプラグインの問題のようです。そして私のこのプロジェクトのためだけに、私はそんなに大きなDig outを選ぶつもりはありません、そして私は実際にフォールバックをするつもりです。 繰り返しますが、これは解決策ではなく、単に問題を隠すための措置です。

Laxmanaが言ったように、私はチェックした、そこに何かメニュー項目があるか。メニュー項目がある場合は、メニュー項目をnav_menuとして表示し、そうでない場合は、デフォルトのメニューを表示します(私の場合は、「ホーム」ボタンを表示しています - 私のサイトでは急務です)。

        <?php
        $menu_name = 'header_menu';
        $locations = get_nav_menu_locations();
        $menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
        $menuitems = wp_get_nav_menu_items( $menu->term_id );
        ?>
        <?php if( !empty($menuitems) ) { ?>
        <?php wp_nav_menu( array( 'theme_location' => 'header_menu', 'menu_class' => 'site-header-menu' ) ); ?>
        <?php } else { ?>
        <div class="menu-top-menu-container">
            <ul class="site-header-menu" id="menu-top-menu">
                <li class="no-margin">
                    <a href="<?php echo home_url('/'); ?>">Home</a>
                </li>
            </ul>
        </div>
        <?php } ?>
1
Mayeenul Islam