Customize: Add unit tests for importing theme starter content.
Props welcher, westonruter. See #38114, #38533, #38615. Fixes #38540. Built from https://develop.svn.wordpress.org/trunk@39276 git-svn-id: http://core.svn.wordpress.org/trunk@39216 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
7329283f7e
commit
2cabe7aef1
|
@ -895,7 +895,7 @@ final class WP_Customize_Manager {
|
||||||
* @access private
|
* @access private
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $starter_content_settings_ids = array();
|
protected $pending_starter_content_settings_ids = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Import theme starter content into the customized state.
|
* Import theme starter content into the customized state.
|
||||||
|
@ -953,7 +953,7 @@ final class WP_Customize_Manager {
|
||||||
$setting_value = $this->widgets->sanitize_widget_js_instance( $instance );
|
$setting_value = $this->widgets->sanitize_widget_js_instance( $instance );
|
||||||
if ( empty( $changeset_data[ $setting_id ] ) || ! empty( $changeset_data[ $setting_id ]['starter_content'] ) ) {
|
if ( empty( $changeset_data[ $setting_id ] ) || ! empty( $changeset_data[ $setting_id ]['starter_content'] ) ) {
|
||||||
$this->set_post_value( $setting_id, $setting_value );
|
$this->set_post_value( $setting_id, $setting_value );
|
||||||
$this->starter_content_settings_ids[] = $setting_id;
|
$this->pending_starter_content_settings_ids[] = $setting_id;
|
||||||
}
|
}
|
||||||
$sidebar_widget_ids[] = $widget_id;
|
$sidebar_widget_ids[] = $widget_id;
|
||||||
}
|
}
|
||||||
|
@ -961,7 +961,7 @@ final class WP_Customize_Manager {
|
||||||
$setting_id = sprintf( 'sidebars_widgets[%s]', $sidebar_id );
|
$setting_id = sprintf( 'sidebars_widgets[%s]', $sidebar_id );
|
||||||
if ( empty( $changeset_data[ $setting_id ] ) || ! empty( $changeset_data[ $setting_id ]['starter_content'] ) ) {
|
if ( empty( $changeset_data[ $setting_id ] ) || ! empty( $changeset_data[ $setting_id ]['starter_content'] ) ) {
|
||||||
$this->set_post_value( $setting_id, $sidebar_widget_ids );
|
$this->set_post_value( $setting_id, $sidebar_widget_ids );
|
||||||
$this->starter_content_settings_ids[] = $setting_id;
|
$this->pending_starter_content_settings_ids[] = $setting_id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1015,7 +1015,7 @@ final class WP_Customize_Manager {
|
||||||
if ( empty( $changeset_data[ $setting_id ] ) || ! empty( $changeset_data[ $setting_id ]['starter_content'] ) ) {
|
if ( empty( $changeset_data[ $setting_id ] ) || ! empty( $changeset_data[ $setting_id ]['starter_content'] ) ) {
|
||||||
$nav_menus_created_posts = array_unique( array_merge( $nav_menus_created_posts, wp_list_pluck( $posts, 'ID' ) ) );
|
$nav_menus_created_posts = array_unique( array_merge( $nav_menus_created_posts, wp_list_pluck( $posts, 'ID' ) ) );
|
||||||
$this->set_post_value( $setting_id, array_values( $nav_menus_created_posts ) );
|
$this->set_post_value( $setting_id, array_values( $nav_menus_created_posts ) );
|
||||||
$this->starter_content_settings_ids[] = $setting_id;
|
$this->pending_starter_content_settings_ids[] = $setting_id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1056,7 +1056,7 @@ final class WP_Customize_Manager {
|
||||||
$this->set_post_value( $nav_menu_setting_id, array(
|
$this->set_post_value( $nav_menu_setting_id, array(
|
||||||
'name' => isset( $nav_menu['name'] ) ? $nav_menu['name'] : $nav_menu_location,
|
'name' => isset( $nav_menu['name'] ) ? $nav_menu['name'] : $nav_menu_location,
|
||||||
) );
|
) );
|
||||||
$this->starter_content_settings_ids[] = $nav_menu_setting_id;
|
$this->pending_starter_content_settings_ids[] = $nav_menu_setting_id;
|
||||||
|
|
||||||
// @todo Add support for menu_item_parent.
|
// @todo Add support for menu_item_parent.
|
||||||
$position = 0;
|
$position = 0;
|
||||||
|
@ -1083,14 +1083,14 @@ final class WP_Customize_Manager {
|
||||||
|
|
||||||
if ( empty( $changeset_data[ $nav_menu_item_setting_id ] ) || ! empty( $changeset_data[ $nav_menu_item_setting_id ]['starter_content'] ) ) {
|
if ( empty( $changeset_data[ $nav_menu_item_setting_id ] ) || ! empty( $changeset_data[ $nav_menu_item_setting_id ]['starter_content'] ) ) {
|
||||||
$this->set_post_value( $nav_menu_item_setting_id, $nav_menu_item );
|
$this->set_post_value( $nav_menu_item_setting_id, $nav_menu_item );
|
||||||
$this->starter_content_settings_ids[] = $nav_menu_item_setting_id;
|
$this->pending_starter_content_settings_ids[] = $nav_menu_item_setting_id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$setting_id = sprintf( 'nav_menu_locations[%s]', $nav_menu_location );
|
$setting_id = sprintf( 'nav_menu_locations[%s]', $nav_menu_location );
|
||||||
if ( empty( $changeset_data[ $setting_id ] ) || ! empty( $changeset_data[ $setting_id ]['starter_content'] ) ) {
|
if ( empty( $changeset_data[ $setting_id ] ) || ! empty( $changeset_data[ $setting_id ]['starter_content'] ) ) {
|
||||||
$this->set_post_value( $setting_id, $nav_menu_term_id );
|
$this->set_post_value( $setting_id, $nav_menu_term_id );
|
||||||
$this->starter_content_settings_ids[] = $setting_id;
|
$this->pending_starter_content_settings_ids[] = $setting_id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1102,7 +1102,7 @@ final class WP_Customize_Manager {
|
||||||
|
|
||||||
if ( empty( $changeset_data[ $name ] ) || ! empty( $changeset_data[ $name ]['starter_content'] ) ) {
|
if ( empty( $changeset_data[ $name ] ) || ! empty( $changeset_data[ $name ]['starter_content'] ) ) {
|
||||||
$this->set_post_value( $name, $value );
|
$this->set_post_value( $name, $value );
|
||||||
$this->starter_content_settings_ids[] = $name;
|
$this->pending_starter_content_settings_ids[] = $name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1114,11 +1114,11 @@ final class WP_Customize_Manager {
|
||||||
|
|
||||||
if ( empty( $changeset_data[ $name ] ) || ! empty( $changeset_data[ $name ]['starter_content'] ) ) {
|
if ( empty( $changeset_data[ $name ] ) || ! empty( $changeset_data[ $name ]['starter_content'] ) ) {
|
||||||
$this->set_post_value( $name, $value );
|
$this->set_post_value( $name, $value );
|
||||||
$this->starter_content_settings_ids[] = $name;
|
$this->pending_starter_content_settings_ids[] = $name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! empty( $this->starter_content_settings_ids ) ) {
|
if ( ! empty( $this->pending_starter_content_settings_ids ) ) {
|
||||||
if ( did_action( 'customize_register' ) ) {
|
if ( did_action( 'customize_register' ) ) {
|
||||||
$this->_save_starter_content_changeset();
|
$this->_save_starter_content_changeset();
|
||||||
} else {
|
} else {
|
||||||
|
@ -1135,14 +1135,16 @@ final class WP_Customize_Manager {
|
||||||
*/
|
*/
|
||||||
public function _save_starter_content_changeset() {
|
public function _save_starter_content_changeset() {
|
||||||
|
|
||||||
if ( empty( $this->starter_content_settings_ids ) ) {
|
if ( empty( $this->pending_starter_content_settings_ids ) ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->save_changeset_post( array(
|
$this->save_changeset_post( array(
|
||||||
'data' => array_fill_keys( $this->starter_content_settings_ids, array( 'starter_content' => true ) ),
|
'data' => array_fill_keys( $this->pending_starter_content_settings_ids, array( 'starter_content' => true ) ),
|
||||||
'starter_content' => true,
|
'starter_content' => true,
|
||||||
) );
|
) );
|
||||||
|
|
||||||
|
$this->pending_starter_content_settings_ids = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1824,7 +1824,7 @@ function get_editor_stylesheets() {
|
||||||
*/
|
*/
|
||||||
function get_theme_starter_content() {
|
function get_theme_starter_content() {
|
||||||
$theme_support = get_theme_support( 'starter-content' );
|
$theme_support = get_theme_support( 'starter-content' );
|
||||||
if ( ! empty( $theme_support ) ) {
|
if ( is_array( $theme_support ) && ! empty( $theme_support[0] ) && is_array( $theme_support[0] ) ) {
|
||||||
$config = $theme_support[0];
|
$config = $theme_support[0];
|
||||||
} else {
|
} else {
|
||||||
$config = array();
|
$config = array();
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* @global string $wp_version
|
* @global string $wp_version
|
||||||
*/
|
*/
|
||||||
$wp_version = '4.7-beta4-39275';
|
$wp_version = '4.7-beta4-39276';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||||
|
|
Loading…
Reference in New Issue