可以将其他元素作为子元素。我看这没什么问题。
要添加自定义元素,必须将自定义元数据库添加到菜单管理。WordPress将自动保存您的自定义元素,因此您无需担心这一点。要显示自定义元素,可以创建自定义walker类或挂接到walker_nav_menu_start_el
滤器取决于type
对于当前项,您可以以不同方式显示菜单项。
/**
* Add meta box to admin menu view
*/
function wpse_287629_add_nav_menu_meta_boxes() {
add_meta_box( \'wpse_287629_custom\', \'Custom boxes\' , \'wpse_287629_nav_menu_links\', \'nav-menus\', \'side\', \'low\' );
}
add_action( \'admin_head-nav-menus.php\', \'wpse_287629_add_nav_menu_meta_boxes\' );
/**
* Output custom boxes nav menu items
*/
function wpse_287629_nav_menu_links() {
?>
<div id="posttype-wpse_287629" class="posttypediv">
<div id="tabs-panel-wpse_287629" class="tabs-panel tabs-panel-active">
<ul id ="wpse_287629-checklist" class="categorychecklist form-no-clear">
<li>
<label class="menu-item-title">
<input type="checkbox" class="menu-item-checkbox" name="menu-item[-1][menu-item-object-id]" value="-1"> Contact box
</label>
<input type="hidden" class="menu-item-type" name="menu-item[-1][menu-item-type]" value="wpse_287629_contact">
<input type="hidden" class="menu-item-title" name="menu-item[-1][menu-item-title]" value="Contact box">
<input type="hidden" class="menu-item-url" name="menu-item[-1][menu-item-url]" value="#">
<input type="hidden" class="menu-item-classes" name="menu-item[-1][menu-item-classes]" value="wpse_287629_contact-box">
</li>
<li>
<label class="menu-item-title">
<input type="checkbox" class="menu-item-checkbox" name="menu-item[-1][menu-item-object-id]" value="-1"> HTML box
</label>
<input type="hidden" class="menu-item-type" name="menu-item[-1][menu-item-type]" value="wpse_287629_html">
<input type="hidden" class="menu-item-title" name="menu-item[-1][menu-item-title]" value="HTML box">
<input type="hidden" class="menu-item-url" name="menu-item[-1][menu-item-url]" value="#">
<input type="hidden" class="menu-item-classes" name="menu-item[-1][menu-item-classes]" value="wpse_287629_html-box">
</li>
</ul>
</div>
<p class="button-controls">
<span class="add-to-menu">
<input type="submit" class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( \'Add to menu\', \'wpse_287629\' ); ?>" name="add-post-type-menu-item" id="submit-posttype-wpse_287629">
<span class="spinner"></span>
</span>
</p>
</div>
<?php
}
function wpse_287629_display_custom_nav_items($item_output, $item, $depth, $args) {
if( $item->type === \'wpse_287629_contact\' ) {
// Return contact box
}
if( $item->type === \'wpse_287629_html\' ) {
// Return html box
}
return $item_output;
}
add_filter(\'walker_nav_menu_start_el\', \'wpse_287629_display_custom_nav_items\', 10, 4);