wp_ajax_menu_get_metabox

The timeline below displays how wordpress function wp_ajax_menu_get_metabox has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.3

/**
 * Handles for retrieving menu meta boxes via AJAX.
 *
 * @since 3.1.0
 */
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();
}

WordPress Version: 5.5

/**
 * Ajax handler for retrieving menu meta boxes.
 *
 * @since 3.1.0
 */
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();
}

WordPress Version: 5.3

/**
 * Ajax handler for retrieving menu meta boxes.
 *
 * @since 3.1.0
 */
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();
}

WordPress Version: 4.1

/**
 * Ajax handler for retrieving menu meta boxes.
 *
 * @since 3.1.0
 */
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);
        ob_start();
        call_user_func_array($callback, array(null, array('id' => 'add-' . $item->name, 'title' => $item->labels->name, 'callback' => $callback, 'args' => $item)));
        $markup = ob_get_clean();
        echo wp_json_encode(array('replace-id' => $type . '-' . $item->name, 'markup' => $markup));
    }
    wp_die();
}

WordPress Version: 4.0

/**
 * Ajax handler for retrieving menu meta boxes.
 *
 * @since 3.1.0
 */
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);
        ob_start();
        call_user_func_array($callback, array(null, array('id' => 'add-' . $item->name, 'title' => $item->labels->name, 'callback' => $callback, 'args' => $item)));
        $markup = ob_get_clean();
        echo json_encode(array('replace-id' => $type . '-' . $item->name, 'markup' => $markup));
    }
    wp_die();
}

WordPress Version: 3.9

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']];
        /**
         * Filter a nav menu meta box object.
         *
         * @since 3.0.0
         *
         * @param object $menus_meta_box_object A nav menu meta box object, such as Page,
         *                                      Post, Category, Tag, etc.
         */
        $item = apply_filters('nav_menu_meta_box_object', $menus_meta_box_object);
        ob_start();
        call_user_func_array($callback, array(null, array('id' => 'add-' . $item->name, 'title' => $item->labels->name, 'callback' => $callback, 'args' => $item)));
        $markup = ob_get_clean();
        echo json_encode(array('replace-id' => $type . '-' . $item->name, 'markup' => $markup));
    }
    wp_die();
}

WordPress Version: 3.7

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']];
        /**
         * Filter a nav menu meta box object.
         *
         * @since 3.0.0
         *
         * @param object $menus_meta_box_object A nav menu meta box object, such as Page, Post, Category, Tag, etc.
         */
        $item = apply_filters('nav_menu_meta_box_object', $menus_meta_box_object);
        ob_start();
        call_user_func_array($callback, array(null, array('id' => 'add-' . $item->name, 'title' => $item->labels->name, 'callback' => $callback, 'args' => $item)));
        $markup = ob_get_clean();
        echo json_encode(array('replace-id' => $type . '-' . $item->name, 'markup' => $markup));
    }
    wp_die();
}