Handles for retrieving menu meta boxes via AJAX.
Source
function wp_ajax_menu_get_metabox() {
if ( ! current_user_can( 'edit_theme_options' ) ) {
wp_die( -1 );
}
require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
if ( isset( $_POST['item-type'] ) && 'post_type' === $_POST['item-type'] ) {
$type = 'posttype';
$callback = 'wp_nav_menu_item_post_type_meta_box';
$items = (array) get_post_types( array( 'show_in_nav_menus' => true ), 'object' );
} elseif ( isset( $_POST['item-type'] ) && 'taxonomy' === $_POST['item-type'] ) {
$type = 'taxonomy';
$callback = 'wp_nav_menu_item_taxonomy_meta_box';
$items = (array) get_taxonomies( array( 'show_ui' => true ), 'object' );
}
if ( ! empty( $_POST['item-object'] ) && isset( $items[ $_POST['item-object'] ] ) ) {
$menus_meta_box_object = $items[ $_POST['item-object'] ];
/** This filter is documented in wp-admin/includes/nav-menu.php */
$item = apply_filters( 'nav_menu_meta_box_object', $menus_meta_box_object );
$box_args = array(
'id' => 'add-' . $item->name,
'title' => $item->labels->name,
'callback' => $callback,
'args' => $item,
);
ob_start();
$callback( null, $box_args );
$markup = ob_get_clean();
echo wp_json_encode(
array(
'replace-id' => $type . '-' . $item->name,
'markup' => $markup,
)
);
}
wp_die();
}
Hooks
- apply_filters( ‘nav_menu_meta_box_object’,
WP_Post_Type|false $post_type ) Filters whether a menu items meta box will be added for the current object type.
Changelog
Version | Description |
---|---|
3.1.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.