Make WordPress Core


Ignore:
Timestamp:
04/28/2010 02:04:30 AM (16 years ago)
Author:
nacin
Message:

Verify nav menu items. props filosofo, fixes #13154.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/nav-menu.php

    r14248 r14263  
    3636
    3737/**
    38  * Check if navigation menu exists.
    39  *
    40  * Returns the menu object, or false if the term doesn't exist.
     38 * Check if the given ID is a nav menu.
     39 *
     40 * Returns true if it is; false otherwise.
    4141 *
    4242 * @since 3.0.0
     
    5555       
    5656        return false;
     57}
     58
     59/**
     60 * Determine whether the given ID is a nav menu item.
     61 *
     62 * @since 3.0.0
     63 *
     64 * @param int $menu_item_id The ID of the potential nav menu item.
     65 * @return bool Whether the given ID is that of a nav menu item.
     66 */
     67function is_nav_menu_item( $menu_item_id = 0 ) {
     68        return ( ! is_wp_error( $menu_item_id ) && ( 'nav_menu_item' == get_post_type( $menu_item_id ) ) );
    5769}
    5870
     
    178190        $menu_id = (int) $menu_id;
    179191        $menu_item_db_id = (int) $menu_item_db_id;
     192
     193        // make sure that we don't convert non-nav_menu_item objects into nav_menu_item objects
     194        if ( ! empty( $menu_item_db_id ) && ! is_nav_menu_item( $menu_item_db_id ) ) {
     195                return new WP_Error('update_nav_menu_item_failed', __('The given object ID is not that of a menu item.'));
     196        }
    180197
    181198        $menu = wp_get_nav_menu_object( $menu_id );
     
    236253        // New menu item
    237254        if ( 0 == $menu_item_db_id ) {
     255                $post['ID'] = 0;
    238256                $menu_item_db_id = wp_insert_post( $post );
    239257
Note: See TracChangeset for help on using the changeset viewer.