Make WordPress Core


Ignore:
Timestamp:
11/17/2020 04:29:02 AM (5 years ago)
Author:
noisysocks
Message:

Customize: Ensure multiple CSS classes are passed to nav_menu_link_attributes as an array

When multiple CSS classes are added to a menu item, the nav_menu_link_attributes
filter should be called with $item->classes set to an array of CSS class names.

When previewing in the Customizer, however, a single string was being passed to
$item->classes because WP_Customize_Nav_Menu_Item_Setting::preview() bypasses
wp_update_nav_menu_item() and instead uses filter_wp_get_nav_menu_items().

The fix is to make filter_wp_get_nav_menu_items() match what
wp_update_nav_menu_item() does and split the string into an array.

Fixes #43113.
Props dlh.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/customize/class-wp-customize-nav-menu-item-setting.php

    r49108 r49624  
    606606        }
    607607
     608        // 'classes' should be an array, as in wp_setup_nav_menu_item().
     609        if ( isset( $item->classes ) && is_scalar( $item->classes ) ) {
     610            $item->classes = explode( ' ', $item->classes );
     611        }
     612
    608613        $item->ID    = $this->post_id;
    609614        $item->db_id = $this->post_id;
Note: See TracChangeset for help on using the changeset viewer.