WordPress.org

Make WordPress Core

Ticket #38057: 38057.patch

File 38057.patch, 4.5 KB (added by keraweb, 4 years ago)

Fix for action parameters with backwards compatibility

  • wp-admin/includes/nav-menu.php

     
    10741074
    10751075        wp_defer_term_counting( false );
    10761076
     1077        // Backwards compatibility similar to wp-includes/nav-menu.php
     1078        $menu_data = get_term( $nav_menu_selected_id, '', ARRAY_A );
     1079        if ( ! empty( $menu_data['name'] ) ) {
     1080                $menu_data['menu-name'] = $menu_data['name'];
     1081        }
     1082
    10771083        /** This action is documented in wp-includes/nav-menu.php */
    1078         do_action( 'wp_update_nav_menu', $nav_menu_selected_id );
     1084        do_action( 'wp_update_nav_menu', $nav_menu_selected_id, $menu_data );
    10791085
    10801086        $messages[] = '<div id="message" class="updated notice is-dismissible"><p>' .
    10811087                /* translators: %s: nav menu title */
  • wp-includes/nav-menu.php

     
    262262 * @since 3.0.0
    263263 *
    264264 * @param int   $menu_id   The ID of the menu or "0" to create a new menu.
    265  * @param array $menu_data The array of menu data.
     265 * @param array $menu_data The array of menu term metadata.
    266266 * @return int|WP_Error Menu ID on success, WP_Error object on failure.
    267267 */
    268268function wp_update_nav_menu_object( $menu_id = 0, $menu_data = array() ) {
     
    271271
    272272        $_menu = wp_get_nav_menu_object( $menu_id );
    273273
     274        // Also accept a `menu` key as fallback
     275        if ( empty( $menu_data['menu-name'] ) && ! empty( $menu_data['name'] ) ) {
     276                $menu_data['menu-name'] = $menu_data['name'];
     277        }
     278
    274279        $args = array(
    275                 'description' => ( isset( $menu_data['description'] ) ? $menu_data['description']  : '' ),
    276                 'name'        => ( isset( $menu_data['menu-name']   ) ? $menu_data['menu-name']    : '' ),
    277                 'parent'      => ( isset( $menu_data['parent']      ) ? (int) $menu_data['parent'] : 0  ),
     280                'description' => ( ! empty( $menu_data['description'] ) ? $menu_data['description']  : '' ),
     281                'name'        => ( ! empty( $menu_data['menu-name']   ) ? $menu_data['menu-name']    : _x( '(unnamed)', 'Missing menu name.' ) ),
     282                'parent'      => ( ! empty( $menu_data['parent']      ) ? (int) $menu_data['parent'] : 0  ),
    278283                'slug'        => null,
    279284        );
    280285
     286        // backwards compatibility for action hooks
     287        $args['menu-name'] = $args['name'];
     288
    281289        // double-check that we're not going to have one menu take the name of another
    282         $_possible_existing = get_term_by( 'name', $menu_data['menu-name'], 'nav_menu' );
     290        $_possible_existing = get_term_by( 'name', $args['name'], 'nav_menu' );
    283291        if (
    284292                $_possible_existing &&
    285293                ! is_wp_error( $_possible_existing ) &&
     
    289297                return new WP_Error( 'menu_exists',
    290298                        /* translators: %s: menu name */
    291299                        sprintf( __( 'The menu name %s conflicts with another menu name. Please try another.' ),
    292                                 '<strong>' . esc_html( $menu_data['menu-name'] ) . '</strong>'
     300                                '<strong>' . esc_html( $args['name'] ) . '</strong>'
    293301                        )
    294302                );
    295303        }
     
    296304
    297305        // menu doesn't already exist, so create a new menu
    298306        if ( ! $_menu || is_wp_error( $_menu ) ) {
    299                 $menu_exists = get_term_by( 'name', $menu_data['menu-name'], 'nav_menu' );
     307                $menu_exists = get_term_by( 'name', $args['name'], 'nav_menu' );
    300308
    301309                if ( $menu_exists ) {
    302310                        return new WP_Error( 'menu_exists',
    303311                                /* translators: %s: menu name */
    304312                                sprintf( __( 'The menu name %s conflicts with another menu name. Please try another.' ),
    305                                         '<strong>' . esc_html( $menu_data['menu-name'] ) . '</strong>'
     313                                        '<strong>' . esc_html( $args['name'] ) . '</strong>'
    306314                                )
    307315                        );
    308316                }
    309317
    310                 $_menu = wp_insert_term( $menu_data['menu-name'], 'nav_menu', $args );
     318                $_menu = wp_insert_term( $args['name'], 'nav_menu', $args );
    311319
    312320                if ( is_wp_error( $_menu ) )
    313321                        return $_menu;
     
    318326                 * @since 3.0.0
    319327                 *
    320328                 * @param int   $term_id   ID of the new menu.
    321                  * @param array $menu_data An array of menu data.
     329                 * @param array $menu_data An array of menu term metadata currently available.
    322330                 */
    323                 do_action( 'wp_create_nav_menu', $_menu['term_id'], $menu_data );
     331                do_action( 'wp_create_nav_menu', $_menu['term_id'], $args );
    324332
    325333                return (int) $_menu['term_id'];
    326334        }
     
    343351         * @since 3.0.0
    344352         *
    345353         * @param int   $menu_id   ID of the updated menu.
    346          * @param array $menu_data An array of menu data.
     354         * @param array $menu_data An array of menu term metadata currently available.
    347355         */
    348         do_action( 'wp_update_nav_menu', $menu_id, $menu_data );
     356        do_action( 'wp_update_nav_menu', $menu_id, $args );
    349357        return $menu_id;
    350358}
    351359