添加过滤器wp_setup_nav_menu_item钩子
add_filter( 'wp_setup_nav_menu_item', '回调函数');
apply_filters( 'wp_setup_nav_menu_item', object $menu_item )
Filters a navigation menu item object.
Parameters #Parameters
$menu_item (object) The menu item object.
$menu_item->newItem = get_post_meta( $menu_item->ID,'_menu_item_newItem', true );
显示实际上最后是调用wp_edit_nav_menu_walker显示的,增加自定义wp_edit_nav_menu_walker过滤器
add_filter('wp_edit_nav_menu_walker', '自定义walker回调', 10, 2 );
添加动作wp_update_nav_menu_item钩子
add_action( 'wp_update_nav_menu_item', '回调函数',10, 3 );
do_action( 'wp_update_nav_menu_item', int $menu_id, int$menu_item_db_id, array $args )
Fires after a navigation menu item has been updated.
Parameters #Parameters
$menu_id (int) ID of the updated menu.
$menu_item_db_id (int) ID of the updated menu item.
$args (array) An array of arguments used to update a menu item.
获取post中自定义参数的值,并调用update_post_meta保存
update_post_meta( $menu_item_db_id, '_menu_item_'.$key, $value );
显示前调用wp_get_nav_menu_items获取菜单项,会调用wp_setup_nav_menu_item过滤器增加自定义项,在前台页面可以直接显示。