【发布时间】:2016-01-24 07:08:13
【问题描述】:
我想根据用户的位置分配不同的菜单。我已经安装了检测用户国家代码的 GeoIP 检测插件。我在 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 的文本块。但我似乎找不到这个。
【问题讨论】:
-
您需要将 IF 语句包裹在当前菜单代码周围,然后将新的菜单代码放入 ELSE 语句中。