WP_Style_Engine_Processor::combine_rules_selectors()privateWP 6.1.0

Combines selectors from the rules store when they have the same styles.

Метод класса: WP_Style_Engine_Processor{}

Хуков нет.

Возвращает

null. Ничего (null).

Использование

// private - только в коде основоного (родительского) класса
$result = $this->combine_rules_selectors();

Список изменений

С версии 6.1.0 Введена.

Код WP_Style_Engine_Processor::combine_rules_selectors() WP 6.5.2

private function combine_rules_selectors() {
	// Build an array of selectors along with the JSON-ified styles to make comparisons easier.
	$selectors_json = array();
	foreach ( $this->css_rules as $rule ) {
		$declarations = $rule->get_declarations()->get_declarations();
		ksort( $declarations );
		$selectors_json[ $rule->get_selector() ] = wp_json_encode( $declarations );
	}

	// Combine selectors that have the same styles.
	foreach ( $selectors_json as $selector => $json ) {
		// Get selectors that use the same styles.
		$duplicates = array_keys( $selectors_json, $json, true );
		// Skip if there are no duplicates.
		if ( 1 >= count( $duplicates ) ) {
			continue;
		}

		$declarations = $this->css_rules[ $selector ]->get_declarations();

		foreach ( $duplicates as $key ) {
			// Unset the duplicates from the $selectors_json array to avoid looping through them as well.
			unset( $selectors_json[ $key ] );
			// Remove the rules from the rules collection.
			unset( $this->css_rules[ $key ] );
		}
		// Create a new rule with the combined selectors.
		$duplicate_selectors                     = implode( ',', $duplicates );
		$this->css_rules[ $duplicate_selectors ] = new WP_Style_Engine_CSS_Rule( $duplicate_selectors, $declarations );
	}
}