如果自定义菜单项基于帖子、类别或其他WP对象,则可以使用WP\\u setup\\u nav\\u menu\\u item(WP\\u object)获取菜单项对象。
$item=wp_setup_nav_menu_item(get_post());
该对象将正确获取大部分信息集,但并非所有信息都存在。我们仍然需要设置项目的一些属性。我们需要设置父菜单项,如果要使其处于顶层,请将其值设置为0。
$item->menu_item_parent = $parentitem->ID;
为了使项目具有子项,您需要分配一个db\\U id,但这需要是WP对象的id,它不能与任何其他值一起工作(最好我没有让它工作)。所以我们需要设置:
$item->db_id = get_the_ID();
如果您当前的条目将包含您添加的子条目
menu-has-children
到classes变量。注:我还添加了主题所需的其他(css)类。
$item->classes = array("menu-item", "menu-item-type-post_type", "menu-item-object-page", "menu-item-has-children");
您可以通过如上所述创建项目,然后修改
$item->title
和
$item->url
但是保留身份证。只需确保ID在菜单级别是唯一的(我没有检查它是否需要在菜单中是唯一的)。
(对于像我这样在尝试创建自定义菜单时发现此线程的其他人:菜单顺序需要确保父菜单后面紧跟着子菜单。)