我正在尝试在目标网页上使用自定义菜单。
我使用了以下代码:
<?php
function change_wp_nav_menu_args($args = ''){
$pageID = get_the_id();
if($pageID == '63') //custom menu for site with id 63
{
$args['menu'] = 'homepage';
}
return $args;
}
add_filter( 'wp_nav_menu_args', 'change_wp_nav_menu_args' );
?>
它工作正常,但不仅主菜单发生了变化。 页脚菜单也会更改。 但是每页的页脚菜单应该相同。
我怎么影响呢?
答案 0 :(得分:1)
此代码解决了我的问题:
<?php
add_filter( 'wp_nav_menu_args', 'bb_wp_nav_menu_args' );
function bb_wp_nav_menu_args( $args = '' ) {
// change the menu in the Header menu position
if( $args['theme_location'] == 'primary' && is_page('63') ) {
$args['menu'] = '6'; // 32 is the ID of the menu we want to use here
}
return $args;
}
?>
答案 1 :(得分:1)
很高兴找到答案,但是建议您使代码动态化,而不是将菜单值设置为静态[ $ args ['menu'] ='6']。
建议:
为带有标签菜单的页面创建一个Meta Box [带菜单列表的下拉菜单]。并使用 wp_nav_menu 的菜单ID。
对于下拉菜单[列出菜单]
function your_menus()
{
$menu_arr=NULL;
$menus=get_terms( 'nav_menu', array( 'hide_empty' => true ) );
$menu_arr['your-nomenu']='Default';
foreach ( $menus as $menu ){
$menu_arr[$menu->slug]=$menu->name;
}
return $menu_arr;
}//end of function
对于导航菜单:[_您的页面菜单:元名称]。您可以将代码放在函数中,然后在Header中调用它,也可以将代码直接放在header中。
$page_menu_name=get_post_meta(get_the_ID(),'_your_page_menu',true)==''?'your-nomenu':get_post_meta(get_the_ID(),'_your_page_menu',true);
if($page_menu_name==='your-nomenu')
{
wp_nav_menu(array('theme_location' => 'primary','menu_id'=> 'main-menu','container'=>false,'fallback_cb'=>'','menu_class'=>'main-navigation'));
}
else
{
wp_nav_menu(array('menu_id'=> 'main-menu' , 'container'=>false, 'menu'=>$page_
menu_name,'fallback_cb'=>'','menu_class'=>'main-navigation'));
}
希望它对您有帮助。