admin管理员组文章数量:1335138
I'm using WP Custom Search plugin to generate Advanced Search in one of my newly developed WP site. Though the plugin is not completely bug-free, but it's working just fine (excepts some Undefined Offset warnings, I'm ignoring them for its better support in searching).
But recently noticed that the wp_nav_menu()
on the header.php
is not working when I'm on the search page. It's a simple code as it's used in many of my WP sites:
<?php wp_nav_menu( array( 'theme_location' => 'header_menu', 'menu_class' => 'site-header-menu' ) ); ?>
That's working on all other pages, BUT the search.php
- a typical search template.
I've tried the most-cited solution from:
- this WP Support thread — failed,
- this SO Thread — failed, and
- this WPSE thread — failed
Typically the search page contains a ?s=
on the URL, but using this plugin, I'm getting:
/?search-class=DB_CustomSearch_Widget-db_customsearch_widget&widget_number=preset-1&[search_queries_and_conditions]=&search=Search
Is that a cause I'm failing echoing the menu? (Live site here, and the Advanced Search is on the left)
I'm using WP Custom Search plugin to generate Advanced Search in one of my newly developed WP site. Though the plugin is not completely bug-free, but it's working just fine (excepts some Undefined Offset warnings, I'm ignoring them for its better support in searching).
But recently noticed that the wp_nav_menu()
on the header.php
is not working when I'm on the search page. It's a simple code as it's used in many of my WP sites:
<?php wp_nav_menu( array( 'theme_location' => 'header_menu', 'menu_class' => 'site-header-menu' ) ); ?>
That's working on all other pages, BUT the search.php
- a typical search template.
I've tried the most-cited solution from:
- this WP Support thread — failed,
- this SO Thread — failed, and
- this WPSE thread — failed
Typically the search page contains a ?s=
on the URL, but using this plugin, I'm getting:
http://example/?search-class=DB_CustomSearch_Widget-db_customsearch_widget&widget_number=preset-1&[search_queries_and_conditions]=&search=Search
Is that a cause I'm failing echoing the menu? (Live site here, and the Advanced Search is on the left)
Share Improve this question edited May 23, 2017 at 12:40 CommunityBot 1 asked May 7, 2014 at 18:34 Mayeenul IslamMayeenul Islam 12.9k21 gold badges85 silver badges169 bronze badges 4 |2 Answers
Reset to default 3I know this is an old thread but the problem still exists. I think this is a bug. Default queries such as nav should not be affected in making custom search page. Anyways, this is how I fixed it:
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');
As Milo stated, it seems it's a problem of the plugin. And solely for this project of mine, I'm not going for such a big dig out, and I'm actually going for a fallback. I repeat, it's not a solution, just a problem hiding measure.
I checked, as Laxmana said that, is there any menu items found there. If there're menu items, show the menu items as a nav_menu, if not, show the default menu (in my case, I'm just showing the "Home" button there - as my site demands that urgently).
<?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 } ?>
本文标签: menuswpnavmenu() not working on Custom Search Page
版权声明:本文标题:menus - wp_nav_menu() not working on Custom Search Page 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742267981a2443767.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
wp_get_nav_menu_items()
- it's returning the menu array in all the pages, except the Search page. – Mayeenul Islam Commented May 8, 2014 at 18:39