Make WordPress Core


Ignore:
Timestamp:
04/28/2010 02:04:30 AM (15 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.