WP_Theme_JSON::prepend_to_selector
Prepends a sub-selector to an existing one.
Given the compounded $selector "h1, h2, h3" and the $to_prepend selector ".some-class " the result will be ".some-class h1, .some-class h2, .some-class h3".
Метод класса: WP_Theme_JSON{}
Хуков нет.
Возвращает
string. The new selector.
Использование
$result = WP_Theme_JSON::prepend_to_selector( $selector, $to_prepend );
- $selector(строка) (обязательный)
- Original selector.
- $to_prepend(строка) (обязательный)
- Selector to prepend.
Список изменений
| С версии 6.3.0 | Введена. |
Код WP_Theme_JSON::prepend_to_selector() WP Theme JSON::prepend to selector WP 7.1.1
protected static function prepend_to_selector( $selector, $to_prepend ) {
if ( ! str_contains( $selector, ',' ) ) {
return $to_prepend . trim( $selector, " \t\n" );
}
/**
* Check for an opportunity to skip the more-costly selector splitting.
* This should be possible if there are no comments, strings, functions,
* URLs, escapes, or comment declaration openers (CDOs).
*
* Note that this means the fast-path will not apply for selectors like
* the following incomplete list:
*
* - `[class ~= "wide"]`
* - `.wp-block:is(.is-style-a, .is-style-b)`
* - `:nth-child(1)`
*
* These syntax forms all present opportunities where a comma may not
* separate selectors. If none of the start characters are present,
* there should be no way for a comma to mean anything other than a
* comma token. The exception are syntax errors, which are not handled here.
*
* @see https://www.w3.org/TR/css-syntax-3/#parse-comma-separated-list-of-component-values
*/
if ( strlen( $selector ) === strcspn( $selector, '/\'"(<\\' ) ) {
return $to_prepend . preg_replace( '~[ \t\n]*,[ \t\n]*~', ", {$to_prepend}", trim( $selector, " \t\n" ) );
}
$new_selectors = array();
$selectors = static::split_selector_list( $selector );
foreach ( $selectors as $sel ) {
$new_selectors[] = $to_prepend . $sel;
}
return implode( ', ', $new_selectors );
}