wp_delete_nav_menu

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

WordPress Version: 6.1

/**
 * Deletes a navigation menu.
 *
 * @since 3.0.0
 *
 * @param int|string|WP_Term $menu Menu ID, slug, name, or object.
 * @return bool|WP_Error True on success, false or WP_Error object on failure.
 */
function wp_delete_nav_menu($menu)
{
    $menu = wp_get_nav_menu_object($menu);
    if (!$menu) {
        return false;
    }
    $menu_objects = get_objects_in_term($menu->term_id, 'nav_menu');
    if (!empty($menu_objects)) {
        foreach ($menu_objects as $item) {
            wp_delete_post($item);
        }
    }
    $result = wp_delete_term($menu->term_id, 'nav_menu');
    // Remove this menu from any locations.
    $locations = get_nav_menu_locations();
    foreach ($locations as $location => $menu_id) {
        if ($menu_id == $menu->term_id) {
            $locations[$location] = 0;
        }
    }
    set_theme_mod('nav_menu_locations', $locations);
    if ($result && !is_wp_error($result)) {
        /**
         * Fires after a navigation menu has been successfully deleted.
         *
         * @since 3.0.0
         *
         * @param int $term_id ID of the deleted menu.
         */
        do_action('wp_delete_nav_menu', $menu->term_id);
    }
    return $result;
}

WordPress Version: 4.9

/**
 * Delete a Navigation Menu.
 *
 * @since 3.0.0
 *
 * @param int|string|WP_Term $menu Menu ID, slug, name, or object.
 * @return bool|WP_Error True on success, false or WP_Error object on failure.
 */
function wp_delete_nav_menu($menu)
{
    $menu = wp_get_nav_menu_object($menu);
    if (!$menu) {
        return false;
    }
    $menu_objects = get_objects_in_term($menu->term_id, 'nav_menu');
    if (!empty($menu_objects)) {
        foreach ($menu_objects as $item) {
            wp_delete_post($item);
        }
    }
    $result = wp_delete_term($menu->term_id, 'nav_menu');
    // Remove this menu from any locations.
    $locations = get_nav_menu_locations();
    foreach ($locations as $location => $menu_id) {
        if ($menu_id == $menu->term_id) {
            $locations[$location] = 0;
        }
    }
    set_theme_mod('nav_menu_locations', $locations);
    if ($result && !is_wp_error($result)) {
        /**
         * Fires after a navigation menu has been successfully deleted.
         *
         * @since 3.0.0
         *
         * @param int $term_id ID of the deleted menu.
         */
        do_action('wp_delete_nav_menu', $menu->term_id);
    }
    return $result;
}

WordPress Version: 4.0

/**
 * Delete a Navigation Menu.
 *
 * @since 3.0.0
 *
 * @param string $menu Menu ID, slug, or name.
 * @return bool|WP_Error True on success, false or WP_Error object on failure.
 */
function wp_delete_nav_menu($menu)
{
    $menu = wp_get_nav_menu_object($menu);
    if (!$menu) {
        return false;
    }
    $menu_objects = get_objects_in_term($menu->term_id, 'nav_menu');
    if (!empty($menu_objects)) {
        foreach ($menu_objects as $item) {
            wp_delete_post($item);
        }
    }
    $result = wp_delete_term($menu->term_id, 'nav_menu');
    // Remove this menu from any locations.
    $locations = get_nav_menu_locations();
    foreach ($locations as $location => $menu_id) {
        if ($menu_id == $menu->term_id) {
            $locations[$location] = 0;
        }
    }
    set_theme_mod('nav_menu_locations', $locations);
    if ($result && !is_wp_error($result)) {
        /**
         * Fires after a navigation menu has been successfully deleted.
         *
         * @since 3.0.0
         *
         * @param int $term_id ID of the deleted menu.
         */
        do_action('wp_delete_nav_menu', $menu->term_id);
    }
    return $result;
}

WordPress Version: 3.9

/**
 * Delete a Navigation Menu.
 *
 * @since 3.0.0
 *
 * @param string $menu name|id|slug
 * @return mixed Menu object on success|WP_Error on failure
 */
function wp_delete_nav_menu($menu)
{
    $menu = wp_get_nav_menu_object($menu);
    if (!$menu) {
        return false;
    }
    $menu_objects = get_objects_in_term($menu->term_id, 'nav_menu');
    if (!empty($menu_objects)) {
        foreach ($menu_objects as $item) {
            wp_delete_post($item);
        }
    }
    $result = wp_delete_term($menu->term_id, 'nav_menu');
    // Remove this menu from any locations.
    $locations = get_nav_menu_locations();
    foreach ($locations as $location => $menu_id) {
        if ($menu_id == $menu->term_id) {
            $locations[$location] = 0;
        }
    }
    set_theme_mod('nav_menu_locations', $locations);
    if ($result && !is_wp_error($result)) {
        /**
         * Fires after a navigation menu has been successfully deleted.
         *
         * @since 3.0.0
         *
         * @param int $term_id ID of the deleted menu.
         */
        do_action('wp_delete_nav_menu', $menu->term_id);
    }
    return $result;
}

WordPress Version: 3.7

/**
 * Delete a Navigation Menu.
 *
 * @since 3.0.0
 *
 * @param string $menu name|id|slug
 * @return mixed Menu object on success|WP_Error on failure
 */
function wp_delete_nav_menu($menu)
{
    $menu = wp_get_nav_menu_object($menu);
    if (!$menu) {
        return false;
    }
    $menu_objects = get_objects_in_term($menu->term_id, 'nav_menu');
    if (!empty($menu_objects)) {
        foreach ($menu_objects as $item) {
            wp_delete_post($item);
        }
    }
    $result = wp_delete_term($menu->term_id, 'nav_menu');
    // Remove this menu from any locations.
    $locations = get_nav_menu_locations();
    foreach ($locations as $location => $menu_id) {
        if ($menu_id == $menu->term_id) {
            $locations[$location] = 0;
        }
    }
    set_theme_mod('nav_menu_locations', $locations);
    if ($result && !is_wp_error($result)) {
        do_action('wp_delete_nav_menu', $menu->term_id);
    }
    return $result;
}