WordPress中的条件菜单

时间:2013-08-26 11:43:11

标签: wordpress wordpress-theming

我正在尝试根据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' ) );

(我不太确定区别。) 提前致谢

1 个答案:

答案 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;
}