我正在尝试根据Cookie的值显示WordPress菜单。 在我的示例中,我使用cookie来定义用户想要查看的地理区域。 (我还在研究这部分,所以我在开发过程中手动定义它。) 基于此,我想使用menu1或menu2。 目前我正在使用以下代码:
function pstv_set_cookie() {
$expire=time()+60*60*24*30;
setcookie("region", "1", $expire);
}
add_action( 'init', 'pstv_set_cookie');
if ($_COOKIE[$region] = "1"){
//Use Menu 1
wp_nav_menu( array('menu' => 'menu1' ));
//wp_nav_menu( array( 'theme_location' => 'menu1' ) );
}elseif ($_COOKIE[$region] = "2"){
//Use Menu 2
wp_nav_menu( array('menu' => 'menu2' ));
//wp_nav_menu( array( 'theme_location' => 'menu2' ) );
}
这几乎按预期工作,但它在其他任何内容之前吐出菜单HTML。
我在哪里添加我的编码以挂钩到WordPress菜单?
注意:我试过了:
wp_nav_menu( array('menu' => 'menu2' )); AND
wp_nav_menu( array( 'theme_location' => 'menu2' ) );
(我不太确定区别。) 提前致谢
答案 0 :(得分:0)
wp_nav_menu在现场显示一个导航菜单,你正在使用一个init钩子,它先于其他任何东西运行,就像你想象的那样。
或者:
过滤器示例(未测试):
add_filter('wp_nav_menu_args', 'my_wp_nav_menu_args_filter');
function my_wp_nav_menu_args_filter($args = array()) {
$args['menu'] = 'menu1';
return $args;
}