我在我的主题中这样做了,所以您可以在这里查看整个代码:https://wordpress.org/themes/twenty8teen
我使用了标准的walker,并为“walker\\u nav\\u menu\\u start\\u el”添加了一个过滤器。当然,我也希望它能用于回退页面菜单,所以我克隆了标准walker并将调用添加到apply_filters
使用稍微不同的过滤器。
/**
* For custom menu, adding an input and label for submenus.
*/
function twenty8teen_nav_menu_start_el( $item_output, $item, $depth, $args ) {
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
if ( $classes && in_array( \'menu-item-has-children\', $classes ) ||
in_array( \'page_item_has_children\', $classes) ) {
$item_output .= \'<input type="checkbox" id="sub\' . $item->ID
. \'"><label for="sub\' . $item->ID . \'"></label>\';
}
return $item_output;
}
/**
* For page menu, adding an input and label for submenus.
*/
function twenty8teen_page_menu_start_el( $item_output, $page, $depth, $args ) {
if ( isset( $args[\'pages_with_children\'][ $page->ID ] ) ) {
$item_output .= \'<input type="checkbox" id="sub\' . $page->ID
. \'"><label for="sub\' . $page->ID . \'"></label>\';
}
return $item_output;
}
add_filter( \'walker_page_menu_start_el\', \'twenty8teen_page_menu_start_el\', 9, 4);