Make WordPress Core

Changeset 15078


Ignore:
Timestamp:
05/31/2010 04:11:20 PM (15 years ago)
Author:
nacin
Message:

Cleanups.

Location:
trunk/wp-includes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/default-filters.php

    r14996 r15078  
    230230add_action( 'comment_form', 'wp_comment_form_unfiltered_html_nonce'        );
    231231add_action( 'wp_scheduled_delete',        'wp_scheduled_delete'            );
     232
     233// Navigation menu actions
    232234add_action( 'trash_post',                 '_wp_trash_menu_item'            );
    233235add_action( 'untrash_post',               '_wp_untrash_menu_item'          );
    234236add_action( 'delete_post',                '_wp_delete_post_menu_item'      );
    235237add_action( 'delete_term',                '_wp_delete_tax_menu_item'       );
     238add_action( 'transition_post_status', '_wp_auto_add_pages_to_menu',  10, 3 );
    236239
    237240// Post Thumbnail CSS class filtering
  • trunk/wp-includes/nav-menu.php

    r15008 r15078  
    1717 *
    1818 * @param string $menu Menu id, slug or name
    19  * @return mixed false if $menu param isn't supplied or term does not exist, menu object if successfull
     19 * @return mixed false if $menu param isn't supplied or term does not exist, menu object if successful.
    2020 */
    2121function wp_get_nav_menu_object( $menu ) {
     
    3131        $menu_obj = get_term_by( 'name', $menu, 'nav_menu' );
    3232
    33     if ( ! $menu_obj ) {
     33    if ( ! $menu_obj )
    3434        $menu_obj = false;
    35     }
    3635
    3736    return $menu_obj;
     
    3938
    4039/**
    41  * Check if the given ID is a nav menu.
     40 * Check if the given ID is a navigation menu.
    4241 *
    4342 * Returns true if it is; false otherwise.
     
    6665
    6766/**
    68  * Register nav menus for a theme.
     67 * Register navigation menus for a theme.
    6968 *
    7069 * @since 3.0.0
     
    8180
    8281/**
    83  * Register nav menu for a theme.
     82 * Register a navigation menu for a theme.
    8483 *
    8584 * @since 3.0.0
     
    9291}
    9392/**
    94  * Returns an array of all registered nav menus in a theme
     93 * Returns an array of all registered navigation menus in a theme
    9594 *
    9695 * @since 3.0.0
     
    105104
    106105/**
    107  * Returns an array with the registered nav menu locations and the menu assigned to it
     106 * Returns an array with the registered navigation menu locations and the menu assigned to it
    108107 *
    109108 * @since 3.0.0
     
    112111
    113112function get_nav_menu_locations() {
    114     return get_theme_mod('nav_menu_locations');
     113    return get_theme_mod( 'nav_menu_locations' );
    115114}
    116115
     
    130129 * Create a Navigation Menu.
    131130 *
    132  * Optional args:
    133  * slug - the url friendly version of the nav menu.
    134  *
    135131 * @since 3.0.0
    136132 *
    137133 * @param string $menu_name Menu Name
    138  * @param string $args Optional.
    139  * @return mixed Menu object on sucess|WP_Error on failure
    140  */
    141 function wp_create_nav_menu( $menu_name, $args = array() ) {
     134 * @return mixed Menu object on success|WP_Error on failure
     135 */
     136function wp_create_nav_menu( $menu_name ) {
    142137    $menu_exists = get_term_by( 'name', $menu_name, 'nav_menu' );
    143138
     
    152147    $result = get_term( $menu['term_id'], 'nav_menu' );
    153148
    154     if ( $result && !is_wp_error($result) ) {
     149    if ( $result && !is_wp_error($result) )
    155150        do_action( 'wp_create_nav_menu', $menu['term_id'] );
    156         return $result;
    157     } else {
    158         return $result;
    159     }
     151
     152    return $result;
    160153}
    161154
     
    166159 *
    167160 * @param string $menu name|id|slug
    168  * @return mixed Menu object on sucess|WP_Error on failure
     161 * @return mixed Menu object on success|WP_Error on failure
    169162 */
    170163function wp_delete_nav_menu( $menu ) {
    171164    $menu = wp_get_nav_menu_object( $menu );
    172     if ( ! $menu  )
     165    if ( ! $menu )
    173166        return false;
    174167
    175168    $menu_objects = get_objects_in_term( $menu->term_id, 'nav_menu' );
    176     if ( !empty( $menu_objects ) ) {
     169    if ( ! empty( $menu_objects ) ) {
    177170        foreach ( $menu_objects as $item ) {
    178171            wp_delete_post( $item );
     
    182175    $result = wp_delete_term( $menu->term_id, 'nav_menu' );
    183176
    184     if ( $result && !is_wp_error($result) ) {
     177    if ( $result && !is_wp_error($result) )
    185178        do_action( 'wp_delete_nav_menu', $menu->term_id );
    186         return $result;
    187     } else {
    188         return $result;
    189     }
     179
     180    return $result;
    190181}
    191182
     
    211202        return $_menu;
    212203
    213     if ( $_menu && isset( $_menu->term_id ) ) {
    214         $args = array(
    215             'description' => ( isset( $menu_data['description'] ) ? $menu_data['description'] : '' ),
    216             'name' => ( isset( $menu_data['menu-name'] ) ? $menu_data['menu-name'] : '' ),
    217             'parent' => ( isset( $menu_data['parent'] ) ? (int) $menu_data['parent'] : 0 ),
    218             'slug' => null,
    219         );
    220 
    221         $menu_id = (int) $_menu->term_id;
    222 
    223         // double-check that we're not changing a menu to the name of another
    224         $_possible_existing = get_term_by( 'name', $menu_data['menu-name'], 'nav_menu' );
    225         if (
    226             $_possible_existing &&
    227             ! is_wp_error( $_possible_existing ) &&
    228             isset( $_possible_existing->term_id ) &&
    229             $_possible_existing->term_id != $menu_id
    230         ) {
    231             return new WP_Error( 'menu_exists', sprintf( __('The menu name <strong>%s</strong> conflicts with another menu name. Please try another.'), esc_html( $menu_data['menu-name'] ) ) );
    232         }
    233 
    234         $update_response = wp_update_term( $menu_id, 'nav_menu', $args );
    235 
    236         if ( ! is_wp_error( $update_response ) )
    237             return $menu_id;
    238         else
    239             return $update_response;
    240     } else {
     204    if ( ! $_menu || ! isset( $_menu->term_id ) )
    241205        return 0;
    242     }
     206
     207    $args = array(
     208        'description' => ( isset( $menu_data['description'] ) ? $menu_data['description']  : '' ),
     209        'name'        => ( isset( $menu_data['menu-name']   ) ? $menu_data['menu-name']    : '' ),
     210        'parent'      => ( isset( $menu_data['parent']      ) ? (int) $menu_data['parent'] : 0  ),
     211        'slug'        => null,
     212    );
     213
     214    $menu_id = (int) $_menu->term_id;
     215
     216    // double-check that we're not changing a menu to the name of another
     217    $_possible_existing = get_term_by( 'name', $menu_data['menu-name'], 'nav_menu' );
     218    if (
     219        $_possible_existing &&
     220        ! is_wp_error( $_possible_existing ) &&
     221        isset( $_possible_existing->term_id ) &&
     222        $_possible_existing->term_id != $menu_id
     223    )
     224        return new WP_Error( 'menu_exists', sprintf( __('The menu name <strong>%s</strong> conflicts with another menu name. Please try another.'), esc_html( $menu_data['menu-name'] ) ) );
     225
     226    $update_response = wp_update_term( $menu_id, 'nav_menu', $args );
     227
     228    if ( ! is_wp_error( $update_response ) )
     229        return $menu_id;
     230    else
     231        return $update_response;
    243232}
    244233
     
    316305            $original_title = $original_object->post_title;
    317306
    318             if ( 'trash' == get_post_status( $args['menu-item-object-id'] ) ) {
     307            if ( 'trash' == get_post_status( $args['menu-item-object-id'] ) )
    319308                return new WP_Error('update_nav_menu_item_failed', sprintf(__('The menu item "%1$s" belongs to something that is in the trash, so it cannot be updated.'), $args['menu-item-title'] ) );
    320             }
    321309        }
    322310
     
    325313
    326314            // hack to get wp to create a post object when too many properties are empty
    327             if ( empty( $args['menu-item-description'] ) ) {
     315            if ( empty( $args['menu-item-description'] ) )
    328316                $args['menu-item-description'] = ' ';
    329             }
    330317        }
    331318    }
     
    363350    }
    364351
    365     if ( $menu_item_db_id && ! is_wp_error( $menu_item_db_id ) ) {
    366 
    367         $menu_item_db_id = (int) $menu_item_db_id;
    368 
    369         update_post_meta( $menu_item_db_id, '_menu_item_type', sanitize_key($args['menu-item-type']) );
    370         update_post_meta( $menu_item_db_id, '_menu_item_menu_item_parent', (int) $args['menu-item-parent-id'] );
    371         update_post_meta( $menu_item_db_id, '_menu_item_object_id', (int) $args['menu-item-object-id'] );
    372         update_post_meta( $menu_item_db_id, '_menu_item_object', sanitize_key($args['menu-item-object']) );
    373         update_post_meta( $menu_item_db_id, '_menu_item_target', sanitize_key($args['menu-item-target']) );
    374        
    375         $args['menu-item-classes'] = array_map( 'sanitize_html_class', explode( ' ', $args['menu-item-classes'] ) );
    376         $args['menu-item-xfn'] = implode( ' ', array_map( 'sanitize_html_class', explode( ' ', $args['menu-item-xfn'] ) ) );
    377         update_post_meta( $menu_item_db_id, '_menu_item_classes', $args['menu-item-classes'] );
    378         update_post_meta( $menu_item_db_id, '_menu_item_xfn', $args['menu-item-xfn'] );
    379         update_post_meta( $menu_item_db_id, '_menu_item_url', esc_url_raw($args['menu-item-url']) );
    380        
    381         if ( 0 == $menu_id )
    382             update_post_meta( $menu_item_db_id, '_menu_item_orphaned', time() );
    383         else
    384             delete_post_meta( $menu_item_db_id, '_menu_item_orphaned' );
    385 
    386         do_action('wp_update_nav_menu_item', $menu_id, $menu_item_db_id, $args );
    387     }
     352    if ( ! $menu_item_db_id || is_wp_error( $menu_item_db_id ) )
     353        return $menu_item_db_id;
     354
     355    $menu_item_db_id = (int) $menu_item_db_id;
     356
     357    update_post_meta( $menu_item_db_id, '_menu_item_type', sanitize_key($args['menu-item-type']) );
     358    update_post_meta( $menu_item_db_id, '_menu_item_menu_item_parent', (int) $args['menu-item-parent-id'] );
     359    update_post_meta( $menu_item_db_id, '_menu_item_object_id', (int) $args['menu-item-object-id'] );
     360    update_post_meta( $menu_item_db_id, '_menu_item_object', sanitize_key($args['menu-item-object']) );
     361    update_post_meta( $menu_item_db_id, '_menu_item_target', sanitize_key($args['menu-item-target']) );
     362   
     363    $args['menu-item-classes'] = array_map( 'sanitize_html_class', explode( ' ', $args['menu-item-classes'] ) );
     364    $args['menu-item-xfn'] = implode( ' ', array_map( 'sanitize_html_class', explode( ' ', $args['menu-item-xfn'] ) ) );
     365    update_post_meta( $menu_item_db_id, '_menu_item_classes', $args['menu-item-classes'] );
     366    update_post_meta( $menu_item_db_id, '_menu_item_xfn', $args['menu-item-xfn'] );
     367    update_post_meta( $menu_item_db_id, '_menu_item_url', esc_url_raw($args['menu-item-url']) );
     368   
     369    if ( 0 == $menu_id )
     370        update_post_meta( $menu_item_db_id, '_menu_item_orphaned', time() );
     371    else
     372        delete_post_meta( $menu_item_db_id, '_menu_item_orphaned' );
     373
     374    do_action('wp_update_nav_menu_item', $menu_id, $menu_item_db_id, $args );
    388375
    389376    return $menu_item_db_id;
     
    404391}
    405392
    406 
    407393/**
    408394 * Sort menu items by the desired key.
     
    415401 * @return int -1, 0, or 1 if $a is considered to be respectively less than, equal to, or greater than $b.
    416402 */
    417 function _sort_nav_menu_items($a, $b) {
     403function _sort_nav_menu_items( $a, $b ) {
    418404    global $_menu_item_sort_prop;
    419405
    420     if ( empty( $_menu_item_sort_prop ) ) {
     406    if ( empty( $_menu_item_sort_prop ) )
    421407        return 0;
    422     }
    423 
    424     if ( isset( $a->$_menu_item_sort_prop ) && isset( $b->$_menu_item_sort_prop ) ) {
    425         $_a = (int) $a->$_menu_item_sort_prop;
    426         $_b = (int) $b->$_menu_item_sort_prop;
    427 
    428         if ( $a->$_menu_item_sort_prop == $b->$_menu_item_sort_prop ) {
    429             return 0;
    430         } elseif (
    431             ( $_a == $a->$_menu_item_sort_prop ) &&
    432             ( $_b == $b->$_menu_item_sort_prop )
    433         ) {
    434             return $_a < $_b ? -1 : 1;
    435         } else {
    436             return strcmp( $a->$_menu_item_sort_prop, $b->$_menu_item_sort_prop );
    437         }
    438     } else {
     408
     409    if ( ! isset( $a->$_menu_item_sort_prop ) || ! isset( $b->$_menu_item_sort_prop ) )
    439410        return 0;
    440     }
     411
     412    $_a = (int) $a->$_menu_item_sort_prop;
     413    $_b = (int) $b->$_menu_item_sort_prop;
     414
     415    if ( $a->$_menu_item_sort_prop == $b->$_menu_item_sort_prop )
     416        return 0;
     417    elseif ( $_a == $a->$_menu_item_sort_prop && $_b == $b->$_menu_item_sort_prop )
     418        return $_a < $_b ? -1 : 1;
     419    else
     420        return strcmp( $a->$_menu_item_sort_prop, $b->$_menu_item_sort_prop );
    441421}
    442422
     
    465445        return $items;
    466446
    467     $defaults = array( 'order' => 'ASC', 'orderby' => 'menu_order', 'post_type' => 'nav_menu_item', 'post_status' => 'publish', 'output' => ARRAY_A, 'output_key' => 'menu_order', 'nopaging' => true,
    468                       'update_post_term_cache' => false);
     447    $defaults = array( 'order' => 'ASC', 'orderby' => 'menu_order', 'post_type' => 'nav_menu_item',
     448        'post_status' => 'publish', 'output' => ARRAY_A, 'output_key' => 'menu_order', 'nopaging' => true,
     449        'update_post_term_cache' => false );
    469450    $args = wp_parse_args( $args, $defaults );
    470451    if ( count( $items ) > 1 )
     
    479460
    480461    // Get all posts and terms at once to prime the caches
    481     if ( empty($fetched[$menu->term_id]) || $_wp_using_ext_object_cache ) {
     462    if ( empty( $fetched[$menu->term_id] ) || $_wp_using_ext_object_cache ) {
    482463        $fetched[$menu->term_id] = true;
    483464        $posts = array();
     
    485466        foreach ( $items as $item ) {
    486467            $object_id = get_post_meta( $item->ID, '_menu_item_object_id', true );
    487             $object = get_post_meta( $item->ID, '_menu_item_object', true );
    488             $type = get_post_meta( $item->ID, '_menu_item_type', true );
     468            $object    = get_post_meta( $item->ID, '_menu_item_object',    true );
     469            $type      = get_post_meta( $item->ID, '_menu_item_type',      true );
    489470
    490471            if ( 'post_type' == $type )
     
    494475        }
    495476
    496         if ( !empty($posts) ) {
     477        if ( ! empty( $posts ) ) {
    497478            foreach ( array_keys($posts) as $post_type ) {
    498479                get_posts( array('post__in' => $posts[$post_type], 'post_type' => $post_type, 'nopaging' => true, 'update_post_term_cache' => false) );
     
    501482        unset($posts);
    502483
    503         if ( !empty($terms) ) {
     484        if ( ! empty( $terms ) ) {
    504485            foreach ( array_keys($terms) as $taxonomy ) {
    505486                get_terms($taxonomy, array('include' => $terms[$taxonomy]) );
     
    656637    foreach( (array) $menu_items as $menu_item ) {
    657638        if ( isset( $menu_item->ID ) && is_nav_menu_item( $menu_item->ID ) ) {
    658             if ( get_post_meta($menu_item->ID, '_menu_item_type', true) != $object_type )
     639            if ( get_post_meta( $menu_item->ID, '_menu_item_type', true ) != $object_type )
    659640                continue;
    660641
     
    785766    }
    786767}
    787 add_action( 'transition_post_status', '_wp_auto_add_pages_to_menu', 10, 3 );
    788768
    789769?>
Note: See TracChangeset for help on using the changeset viewer.