diff --git a/src/wp-includes/customize/class-wp-customize-nav-menu-item-setting.php b/src/wp-includes/customize/class-wp-customize-nav-menu-item-setting.php
index 5da6515f5f..18cf83dfda 100644
--- a/src/wp-includes/customize/class-wp-customize-nav-menu-item-setting.php
+++ b/src/wp-includes/customize/class-wp-customize-nav-menu-item-setting.php
@@ -605,6 +605,11 @@ class WP_Customize_Nav_Menu_Item_Setting extends WP_Customize_Setting {
$item->post_title = $item->title;
}
+ // 'classes' should be an array, as in wp_setup_nav_menu_item().
+ if ( isset( $item->classes ) && is_scalar( $item->classes ) ) {
+ $item->classes = explode( ' ', $item->classes );
+ }
+
$item->ID = $this->post_id;
$item->db_id = $this->post_id;
$post = new WP_Post( (object) $item );
diff --git a/tests/phpunit/tests/customize/nav-menu-item-setting.php b/tests/phpunit/tests/customize/nav-menu-item-setting.php
index ee552836a3..2409f32885 100644
--- a/tests/phpunit/tests/customize/nav-menu-item-setting.php
+++ b/tests/phpunit/tests/customize/nav-menu-item-setting.php
@@ -906,7 +906,7 @@ class Test_WP_Customize_Nav_Menu_Item_Setting extends WP_UnitTestCase {
'target' => '',
'attr_title' => '">att \o/ o\'o empted baddie',
'description' => 'Attempted \o/ o\'o markup',
- 'classes' => '',
+ 'classes' => 'class-1 class-2',
'xfn' => '',
'status' => 'publish',
'original_title' => '',
@@ -940,6 +940,7 @@ class Test_WP_Customize_Nav_Menu_Item_Setting extends WP_UnitTestCase {
$expected = apply_filters( 'nav_menu_attr_title', wp_unslash( apply_filters( 'excerpt_save_pre', wp_slash( $post_value['attr_title'] ) ) ) );
$this->assertSame( $expected, $nav_menu_item->attr_title );
$this->assertSame( 'Attempted \o/ o’o markup', $nav_menu_item->description );
+ $this->assertSame( array( 'class-1', 'class-2' ), $nav_menu_item->classes );
}
/**