WP_NAV_MENU()在自定义搜索页面上不起作用

时间:2014-05-07 作者:Mayeenul Islam

我正在使用WP Custom Search 插件生成高级搜索在我的一个新开发的WP网站。虽然插件并不是完全没有bug,但它工作得很好(除了一些未定义的偏移量警告,我忽略它们是为了更好地支持搜索)。

但最近注意到wp_nav_menu()header.php 当我在搜索页面上时不工作。这是一个简单的代码,因为它在我的许多WP站点中使用:

<?php wp_nav_menu( array( \'theme_location\' => \'header_menu\', \'menu_class\' => \'site-header-menu\' ) ); ?>
所有其他页面都是这样,但search.php - 典型的搜索模板。

我尝试了引用最多的解决方案:

  • this WP Support thread &mdash;失败,
  • this SO Thread &mdash;失败,并且this WPSE thread &mdash;失败通常搜索页面包含?s= 在URL上,但使用此插件,我得到:

    http://example.com/?search-class=DB_CustomSearch_Widget-db_customsearch_widget&widget_number=preset-1&[search_queries_and_conditions]=&search=Search
    
    这就是我没能响应菜单的原因吗?(Live site here, 高级搜索位于左侧)

2 个回复
最合适的回答,由SO网友:Mayeenul Islam 整理而成

正如米洛所说,这似乎是插件的问题。仅就我的这个项目而言,我不打算进行这么大的挖掘,实际上我是在后退。I repeat, it\'s not a solution, just a problem hiding measure.

我查过了,正如拉克斯马纳所说,那里有没有菜单项。如果有菜单项,将菜单项显示为nav\\U菜单,如果没有,则显示默认菜单(在我的情况下,我只是在那里显示“主页”按钮,因为我的网站迫切需要)。

        <?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 } ?>

SO网友:abubee

我知道这是一个旧线程,但问题仍然存在。我认为这是一个错误。在创建自定义搜索页面时,默认查询(如nav)不应受到影响。不管怎样,我就是这样修复的:

function fix_nav_menu_in_search($query)
{
    if (is_search()) {
        $query->set(\'post_type\', [\'your_cpt\', \'nav_menu_item\']);
    }

    return $query;
}
add_filter(\'pre_get_posts\', \'fix_nav_menu_in_search\');

结束

相关推荐

Search using WP_Query

我正在使用以下内容WP_Query 在我的search.php 模板,以便仅搜索“产品”自定义帖子类型。出于某种原因,它会返回带有一些搜索词的其他帖子类型。你知道我哪里做错了吗?<?php global $query_string; ?> <?php $query_args = explode(\"&\", $query_string); ?> <?php $search_query = array( \'post_type\' =