wppaste
WordPress

WP_Customize_Manager::import_theme_starter_content( array $starter_content = array() )

Since
4.7.0
Source
wp-includes/class-wp-customize-manager.php:1202
Imports theme starter content into the customized state.

Parameters

$starter_contentarrayoptional
Starter content. Defaults to get_theme_starter_content().Default: array()

Uses · 31

Show all 31

Source

	public function import_theme_starter_content( $starter_content = array() ) {		if ( empty( $starter_content ) ) {			$starter_content = get_theme_starter_content();		} 		$changeset_data = array();		if ( $this->changeset_post_id() ) {			/*			 * Don't re-import starter content into a changeset saved persistently.			 * This will need to be revisited in the future once theme switching			 * is allowed with drafted/scheduled changesets, since switching to			 * another theme could result in more starter content being applied.			 * However, when doing an explicit save it is currently possible for			 * nav menus and nav menu items specifically to lose their starter_content			 * flags, thus resulting in duplicates being created since they fail			 * to get re-used. See #40146.			 */			if ( 'auto-draft' !== get_post_status( $this->changeset_post_id() ) ) {				return;			} 			$changeset_data = $this->get_changeset_post_data( $this->changeset_post_id() );		} 		$sidebars_widgets = isset( $starter_content['widgets'] ) && ! empty( $this->widgets ) ? $starter_content['widgets'] : array();		$attachments      = isset( $starter_content['attachments'] ) && ! empty( $this->nav_menus ) ? $starter_content['attachments'] : array();		$posts            = isset( $starter_content['posts'] ) && ! empty( $this->nav_menus ) ? $starter_content['posts'] : array();		$options          = isset( $starter_content['options'] ) ? $starter_content['options'] : array();		$nav_menus        = isset( $starter_content['nav_menus'] ) && ! empty( $this->nav_menus ) ? $starter_content['nav_menus'] : array();		$theme_mods       = isset( $starter_content['theme_mods'] ) ? $starter_content['theme_mods'] : array(); 		// Widgets.		$max_widget_numbers = array();		foreach ( $sidebars_widgets as $sidebar_id => $widgets ) {			$sidebar_widget_ids = array();			foreach ( $widgets as $widget ) {				list( $id_base, $instance ) = $widget; 				if ( ! isset( $max_widget_numbers[ $id_base ] ) ) { 					// When $settings is an array-like object, get an intrinsic array for use with array_keys().					$settings = get_option( "widget_{$id_base}", array() );					if ( $settings instanceof ArrayObject || $settings instanceof ArrayIterator ) {						$settings = $settings->getArrayCopy();					} 					unset( $settings['_multiwidget'] ); 					// Find the max widget number for this type.					$widget_numbers = array_keys( $settings );					if ( count( $widget_numbers ) > 0 ) {						$widget_numbers[]               = 1;						$max_widget_numbers[ $id_base ] = max( ...$widget_numbers );					} else {						$max_widget_numbers[ $id_base ] = 1;					}				}				$max_widget_numbers[ $id_base ] += 1; 				$widget_id  = sprintf( '%s-%d', $id_base, $max_widget_numbers[ $id_base ] );				$setting_id = sprintf( 'widget_%s[%d]', $id_base, $max_widget_numbers[ $id_base ] ); 				$setting_value = $this->widgets->sanitize_widget_js_instance( $instance );				if ( empty( $changeset_data[ $setting_id ] ) || ! empty( $changeset_data[ $setting_id ]['starter_content'] ) ) {					$this->set_post_value( $setting_id, $setting_value );					$this->pending_starter_content_settings_ids[] = $setting_id;				}				$sidebar_widget_ids[] = $widget_id;			} 			$setting_id = sprintf( 'sidebars_widgets[%s]', $sidebar_id );			if ( empty( $changeset_data[ $setting_id ] ) || ! empty( $changeset_data[ $setting_id ]['starter_content'] ) ) {				$this->set_post_value( $setting_id, $sidebar_widget_ids );				$this->pending_starter_content_settings_ids[] = $setting_id;			}		} 		$starter_content_auto_draft_post_ids = array();		if ( ! empty( $changeset_data['nav_menus_created_posts']['value'] ) ) {			$starter_content_auto_draft_post_ids = array_merge( $starter_content_auto_draft_post_ids, $changeset_data['nav_menus_created_posts']['value'] );

History

Introduced in 4.7.0. Unchanged from 6.7.7 through 7.1.0.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 7.1.0

Signature, return type and hooks compared across 5 parsed releases.

About this page

Parsed data
Generated from the wordpress-develop 6.7.7 tag, from src/wp-includes/class-wp-customize-manager.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.