我需要改变我的菜单URL和添加“/”到每一页的开始,除了主页。使用这段代码可以很好地工作:
function change_menu($items){
if(!is_front_page()){
foreach($items as $item){
$item->url = "/" . $item->url;
}
}
return $items;
}
add_filter(\'wp_nav_menu_objects\', \'change_menu\');
但是,我还需要将其限制为仅第一级项目(子菜单中的所有项目应保持不变)。我知道有“深度”的论点,但我不知道如何使用它。
UPDATE: 我的目的是从经典链接中筛选锚链接。我有一个微型网站,它使用菜单项作为锚链接。其中一个有一个子菜单,其中包含指向自定义子页面的链接。在每个子页面的所有菜单链接的开头添加斜线,将锚指向主页(效果很好),但这会弄乱经典链接。
我设法写了一个变通方法:
// if the URL is an anchor, add a slash
if (strpos($item->url, \'#!/\') !== false) {
$item->url = "/" . $item->url;
}
然而,如果能以更优雅的方式完成,我想听听一些想法。
SO网友:nmr
depth
参数,在附加到的函数中可用wp_nav_menu_objects
挂钩,是指渲染菜单的最大深度(在站点上可以看到多少菜单级别)。
若要仅更改第一级元素,可以在循环中检查菜单项是否有父项。
function change_menu($items) {
if( !is_front_page() ) {
foreach($items as $item) {
if ( $item->menu_item_parent != 0 )
continue;
$item->url = "/" . $item->url;
}
}
return $items;
}
add_filter(\'wp_nav_menu_objects\', \'change_menu\');