我正在做一个动态和静态内容的WP网站。我会从管理面板创建菜单。我有5个部分(主页、关于、船、新闻(博客)、联系人)。我会为船只创建一个带有新分类法的自定义帖子类型。我现在想做的是,自动将每个新船模型显示为船的子菜单。我该怎么做?
向菜单动态添加项目
2 个回复
SO网友:Milo
您可以通过custom walker function, 在您的菜单上。一个非常简单的例子:
class Walker_WPA82563_Submenu extends Walker_Nav_Menu {
function end_el(&$output, $item, $depth=0, $args=array()) {
if( \'Boats\' == $item->title ){
$output .= \'<ul><li>Dynamic Subnav</li></ul>\';
}
$output .= "</li>\\n";
}
}
然后在调用nav菜单的地方,使用walker
论点wp_nav_menu(
array(
\'theme_location\' => \'primary\',
\'walker\' => new Walker_WPA82563_Submenu
)
);
SO网友:Slavic
我相信有一个更好的解决方案,适用于菜单真正动态的情况(例如,它们应该根据用户角色而改变,或者如果菜单项的组合太多,需要在运行时确定)。
Wordpress\'wp_nav_menu_objects
挂钩最方便:
add_filter(\'wp_nav_menu_objects\', \'addMenuItems\', null, 2);
function addMenuItems($sortedItems, $args)
{
$toAdd = [
(object) [
\'ID\' => 1, // make sure this doesn\'t conflict with existing items
\'db_id\' => 1, // same here
\'title\' => \'To Google!\',
\'url\' => \'https://www.google.com\',
],
];
return array_merge($sortedItems, $toAdd);
}
结束