我个人更喜欢在菜单生成之前使用过滤器来处理数据。
示例wp_setup_nav_menu_item
:
add_filter(\'wp_setup_nav_menu_item\', function($menu) {
$menu->url = "";
return $menu;
});
此筛选器在每个检索到的菜单项上运行,但不知道当前正在处理哪个菜单。
另一个示例wp_get_nav_menu_items
:
add_filter(\'wp_get_nav_menu_items\', function($items, $menu) {
if( $menu->slug === \'menu-principal\' ) {
foreach ($items as &$item) {
if ($item->ID === \'MY-PRODUCT-PAGE-ID\') {
$item->url = "";
}
}
}
return $items;
}, 10, 2);
检索完所有菜单项后,将运行另一个筛选器。您还可以访问
$menu
变量(确保最新给出2
add_filter
参数以检索菜单详细信息)。
默认的“walker”负责url
属性值以适应HTML结构和行为。我认为它可以解决你的问题。