在不同国家/地区显示不同的 WordPress 菜单


Show Different Wordpress Menus in Different Countries

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

默认情况下,菜单"国际主菜单"(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。但我似乎找不到这个。

这取决于您要将这些菜单放置在何处。如果你想把它们放在你的标题中,那么你的主题文件"header.php"就是你要去的地方。如果你想在侧边栏中使用它,那么去侧边栏.php(或等效的),测试会很好地工作