在不同的国家显示不同的Wordpress菜单

时间:2016-01-24 07:08:14

标签: php wordpress

我想根据用户的位置分配不同的菜单。我已经安装了GeoIP Detection插件,可以检测用户的国家/地区代码。我在functions.php中分配了变量$ userInfo = geoip_detect2_get_info_from_current_ip()并验证它是否有效。我还创建了两个不同的菜单,分别称为“主菜单”和“主菜单国际”。

默认情况下,菜单“国际主菜单”(ID 303)被分配到主菜单“主菜单”和“主菜单 - 移动”。

但是当isoCode =“TH”时,如何将菜单“主菜单”(ID 51)分配给这两个主题位置?

这是我到目前为止所拥有的。我需要帮助找出放置此代码的位置,以及如何编辑它以使菜单分配给“主要”和“移动”位置。

<?php
    if ( $userInfo->country->isoCode == 'TH' ){
        wp_nav_menu(array('menu_id' => 51)); //Main Menu ID
    } else {
        wp_nav_menu(array('menu_id' => 303)); //Main Menu International ID
    }
?>

编辑:越来越近了(我想)。我用下面的代码替换了原始代码,但现在无论国家/地区或WP管理面板中启用了哪个菜单,都会显示ID较低的菜单。无论代码中的哪些参数我更改它仍然显示ID为51的菜单。

<?php
    if ( $userInfo->country->isoCode == 'TH' ){
        wp_nav_menu(array(
        'menu_id'       => 51,
        'container'     => false,
        'items_wrap'    => '%3$s',
        'depth'         => 0,
        'walker'        => new FlatsomeNavDropdown)); //Main Menu
    } else {
        wp_nav_menu(array(
        'menu_id'       => 303,
        'container'     => false,
        'items_wrap'    => '%3$s',
        'depth'         => 0,
        'walker'        => new FlatsomeNavDropdown)); //Main Menu International
}
?>

我想知道是否需要将menu_id中使用的数字替换为菜单ID的文本slug。但我似乎无法找到这个。

2 个答案:

答案 0 :(得分:1)

这取决于您要将这些菜单放在哪里。如果您想将它们放在标题中,那么您的主题文件&#39; header.php&#39;是去的地方。如果你想在侧边栏中找到它,那么请转到sidebar.php(或等同的)并且测试将运行良好

答案 1 :(得分:0)

菜单代码看起来不错,可能是地理位置插件失败了。您可以尝试使用Geotargeting WordPress,我已使用它多次来实现您的尝试。

加号是通过使用javascript + ajax支持缓存插件