Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-inclu...
File: class-wp-duotone.php
'l' => (float) $match[4],
[500] Fix | Delete
'a' => '' === $match[5] ? 1 : (float) $match[5] / ( $match[6] ? 100 : 1 ),
[501] Fix | Delete
)
[502] Fix | Delete
);
[503] Fix | Delete
[504] Fix | Delete
return self::colord_hsla_to_rgba( $hsla );
[505] Fix | Delete
}
[506] Fix | Delete
[507] Fix | Delete
/**
[508] Fix | Delete
* Tries to convert an incoming string into RGBA values.
[509] Fix | Delete
*
[510] Fix | Delete
* Direct port of colord's parse function simplified for our use case. This
[511] Fix | Delete
* version only supports string parsing and only returns RGBA values.
[512] Fix | Delete
*
[513] Fix | Delete
* @link https://github.com/omgovich/colord/blob/3f859e03b0ca622eb15480f611371a0f15c9427f/src/parse.ts#L37 Sourced from colord.
[514] Fix | Delete
*
[515] Fix | Delete
* @internal
[516] Fix | Delete
*
[517] Fix | Delete
* @since 6.3.0
[518] Fix | Delete
*
[519] Fix | Delete
* @param string $input The string to parse.
[520] Fix | Delete
* @return array|null An array of RGBA values or null if the string is invalid.
[521] Fix | Delete
*/
[522] Fix | Delete
private static function colord_parse( $input ) {
[523] Fix | Delete
$result = self::colord_parse_hex( $input );
[524] Fix | Delete
[525] Fix | Delete
if ( ! $result ) {
[526] Fix | Delete
$result = self::colord_parse_rgba_string( $input );
[527] Fix | Delete
}
[528] Fix | Delete
[529] Fix | Delete
if ( ! $result ) {
[530] Fix | Delete
$result = self::colord_parse_hsla_string( $input );
[531] Fix | Delete
}
[532] Fix | Delete
[533] Fix | Delete
return $result;
[534] Fix | Delete
}
[535] Fix | Delete
[536] Fix | Delete
/**
[537] Fix | Delete
* Takes the inline CSS duotone variable from a block and return the slug.
[538] Fix | Delete
*
[539] Fix | Delete
* Handles styles slugs like:
[540] Fix | Delete
* var:preset|duotone|blue-orange
[541] Fix | Delete
* var(--wp--preset--duotone--blue-orange)
[542] Fix | Delete
*
[543] Fix | Delete
* @internal
[544] Fix | Delete
*
[545] Fix | Delete
* @since 6.3.0
[546] Fix | Delete
*
[547] Fix | Delete
* @param string $duotone_attr The duotone attribute from a block.
[548] Fix | Delete
* @return string The slug of the duotone preset or an empty string if no slug is found.
[549] Fix | Delete
*/
[550] Fix | Delete
private static function get_slug_from_attribute( $duotone_attr ) {
[551] Fix | Delete
// Uses Branch Reset Groups `(?|…)` to return one capture group.
[552] Fix | Delete
preg_match( '/(?|var:preset\|duotone\|(\S+)|var\(--wp--preset--duotone--(\S+)\))/', $duotone_attr, $matches );
[553] Fix | Delete
[554] Fix | Delete
return ! empty( $matches[1] ) ? $matches[1] : '';
[555] Fix | Delete
}
[556] Fix | Delete
[557] Fix | Delete
/**
[558] Fix | Delete
* Checks if we have a valid duotone preset.
[559] Fix | Delete
*
[560] Fix | Delete
* Valid presets are defined in the $global_styles_presets array.
[561] Fix | Delete
*
[562] Fix | Delete
* @internal
[563] Fix | Delete
*
[564] Fix | Delete
* @since 6.3.0
[565] Fix | Delete
*
[566] Fix | Delete
* @param string $duotone_attr The duotone attribute from a block.
[567] Fix | Delete
* @return bool True if the duotone preset present and valid.
[568] Fix | Delete
*/
[569] Fix | Delete
private static function is_preset( $duotone_attr ) {
[570] Fix | Delete
$slug = self::get_slug_from_attribute( $duotone_attr );
[571] Fix | Delete
$filter_id = self::get_filter_id( $slug );
[572] Fix | Delete
[573] Fix | Delete
return array_key_exists( $filter_id, self::get_all_global_styles_presets() );
[574] Fix | Delete
}
[575] Fix | Delete
[576] Fix | Delete
/**
[577] Fix | Delete
* Gets the CSS variable name for a duotone preset.
[578] Fix | Delete
*
[579] Fix | Delete
* Example output:
[580] Fix | Delete
* --wp--preset--duotone--blue-orange
[581] Fix | Delete
*
[582] Fix | Delete
* @internal
[583] Fix | Delete
*
[584] Fix | Delete
* @since 6.3.0
[585] Fix | Delete
*
[586] Fix | Delete
* @param string $slug The slug of the duotone preset.
[587] Fix | Delete
* @return string The CSS variable name.
[588] Fix | Delete
*/
[589] Fix | Delete
private static function get_css_custom_property_name( $slug ) {
[590] Fix | Delete
return "--wp--preset--duotone--$slug";
[591] Fix | Delete
}
[592] Fix | Delete
[593] Fix | Delete
/**
[594] Fix | Delete
* Get the ID of the duotone filter.
[595] Fix | Delete
*
[596] Fix | Delete
* Example output:
[597] Fix | Delete
* wp-duotone-blue-orange
[598] Fix | Delete
*
[599] Fix | Delete
* @internal
[600] Fix | Delete
*
[601] Fix | Delete
* @since 6.3.0
[602] Fix | Delete
*
[603] Fix | Delete
* @param string $slug The slug of the duotone preset.
[604] Fix | Delete
* @return string The ID of the duotone filter.
[605] Fix | Delete
*/
[606] Fix | Delete
private static function get_filter_id( $slug ) {
[607] Fix | Delete
return "wp-duotone-$slug";
[608] Fix | Delete
}
[609] Fix | Delete
[610] Fix | Delete
/**
[611] Fix | Delete
* Get the CSS variable for a duotone preset.
[612] Fix | Delete
*
[613] Fix | Delete
* Example output:
[614] Fix | Delete
* var(--wp--preset--duotone--blue-orange)
[615] Fix | Delete
*
[616] Fix | Delete
* @internal
[617] Fix | Delete
*
[618] Fix | Delete
* @since 6.3.0
[619] Fix | Delete
*
[620] Fix | Delete
* @param string $slug The slug of the duotone preset.
[621] Fix | Delete
* @return string The CSS variable.
[622] Fix | Delete
*/
[623] Fix | Delete
private static function get_css_var( $slug ) {
[624] Fix | Delete
$name = self::get_css_custom_property_name( $slug );
[625] Fix | Delete
return "var($name)";
[626] Fix | Delete
}
[627] Fix | Delete
[628] Fix | Delete
/**
[629] Fix | Delete
* Get the URL for a duotone filter.
[630] Fix | Delete
*
[631] Fix | Delete
* Example output:
[632] Fix | Delete
* url(#wp-duotone-blue-orange)
[633] Fix | Delete
*
[634] Fix | Delete
* @internal
[635] Fix | Delete
*
[636] Fix | Delete
* @since 6.3.0
[637] Fix | Delete
*
[638] Fix | Delete
* @param string $filter_id The ID of the filter.
[639] Fix | Delete
* @return string The URL for the duotone filter.
[640] Fix | Delete
*/
[641] Fix | Delete
private static function get_filter_url( $filter_id ) {
[642] Fix | Delete
return "url(#$filter_id)";
[643] Fix | Delete
}
[644] Fix | Delete
[645] Fix | Delete
/**
[646] Fix | Delete
* Gets the SVG for the duotone filter definition.
[647] Fix | Delete
*
[648] Fix | Delete
* Whitespace is removed when SCRIPT_DEBUG is not enabled.
[649] Fix | Delete
*
[650] Fix | Delete
* @internal
[651] Fix | Delete
*
[652] Fix | Delete
* @since 6.3.0
[653] Fix | Delete
*
[654] Fix | Delete
* @param string $filter_id The ID of the filter.
[655] Fix | Delete
* @param array $colors An array of color strings.
[656] Fix | Delete
* @return string An SVG with a duotone filter definition.
[657] Fix | Delete
*/
[658] Fix | Delete
private static function get_filter_svg( $filter_id, $colors ) {
[659] Fix | Delete
$duotone_values = array(
[660] Fix | Delete
'r' => array(),
[661] Fix | Delete
'g' => array(),
[662] Fix | Delete
'b' => array(),
[663] Fix | Delete
'a' => array(),
[664] Fix | Delete
);
[665] Fix | Delete
[666] Fix | Delete
foreach ( $colors as $color_str ) {
[667] Fix | Delete
$color = self::colord_parse( $color_str );
[668] Fix | Delete
[669] Fix | Delete
if ( null === $color ) {
[670] Fix | Delete
$error_message = sprintf(
[671] Fix | Delete
/* translators: 1: Duotone colors, 2: theme.json, 3: settings.color.duotone */
[672] Fix | Delete
__( '"%1$s" in %2$s %3$s is not a hex or rgb string.' ),
[673] Fix | Delete
$color_str,
[674] Fix | Delete
'theme.json',
[675] Fix | Delete
'settings.color.duotone'
[676] Fix | Delete
);
[677] Fix | Delete
_doing_it_wrong( __METHOD__, $error_message, '6.3.0' );
[678] Fix | Delete
} else {
[679] Fix | Delete
$duotone_values['r'][] = $color['r'] / 255;
[680] Fix | Delete
$duotone_values['g'][] = $color['g'] / 255;
[681] Fix | Delete
$duotone_values['b'][] = $color['b'] / 255;
[682] Fix | Delete
$duotone_values['a'][] = $color['a'];
[683] Fix | Delete
}
[684] Fix | Delete
}
[685] Fix | Delete
[686] Fix | Delete
ob_start();
[687] Fix | Delete
[688] Fix | Delete
?>
[689] Fix | Delete
[690] Fix | Delete
<svg
[691] Fix | Delete
xmlns="http://www.w3.org/2000/svg"
[692] Fix | Delete
viewBox="0 0 0 0"
[693] Fix | Delete
width="0"
[694] Fix | Delete
height="0"
[695] Fix | Delete
focusable="false"
[696] Fix | Delete
role="none"
[697] Fix | Delete
style="visibility: hidden; position: absolute; left: -9999px; overflow: hidden;"
[698] Fix | Delete
>
[699] Fix | Delete
<defs>
[700] Fix | Delete
<filter id="<?php echo esc_attr( $filter_id ); ?>">
[701] Fix | Delete
<feColorMatrix
[702] Fix | Delete
color-interpolation-filters="sRGB"
[703] Fix | Delete
type="matrix"
[704] Fix | Delete
values="
[705] Fix | Delete
.299 .587 .114 0 0
[706] Fix | Delete
.299 .587 .114 0 0
[707] Fix | Delete
.299 .587 .114 0 0
[708] Fix | Delete
.299 .587 .114 0 0
[709] Fix | Delete
"
[710] Fix | Delete
/>
[711] Fix | Delete
<feComponentTransfer color-interpolation-filters="sRGB" >
[712] Fix | Delete
<feFuncR type="table" tableValues="<?php echo esc_attr( implode( ' ', $duotone_values['r'] ) ); ?>" />
[713] Fix | Delete
<feFuncG type="table" tableValues="<?php echo esc_attr( implode( ' ', $duotone_values['g'] ) ); ?>" />
[714] Fix | Delete
<feFuncB type="table" tableValues="<?php echo esc_attr( implode( ' ', $duotone_values['b'] ) ); ?>" />
[715] Fix | Delete
<feFuncA type="table" tableValues="<?php echo esc_attr( implode( ' ', $duotone_values['a'] ) ); ?>" />
[716] Fix | Delete
</feComponentTransfer>
[717] Fix | Delete
<feComposite in2="SourceGraphic" operator="in" />
[718] Fix | Delete
</filter>
[719] Fix | Delete
</defs>
[720] Fix | Delete
</svg>
[721] Fix | Delete
[722] Fix | Delete
<?php
[723] Fix | Delete
[724] Fix | Delete
$svg = ob_get_clean();
[725] Fix | Delete
[726] Fix | Delete
if ( ! SCRIPT_DEBUG ) {
[727] Fix | Delete
// Clean up the whitespace.
[728] Fix | Delete
$svg = preg_replace( "/[\r\n\t ]+/", ' ', $svg );
[729] Fix | Delete
$svg = str_replace( '> <', '><', $svg );
[730] Fix | Delete
$svg = trim( $svg );
[731] Fix | Delete
}
[732] Fix | Delete
[733] Fix | Delete
return $svg;
[734] Fix | Delete
}
[735] Fix | Delete
[736] Fix | Delete
/**
[737] Fix | Delete
* Returns the prefixed id for the duotone filter for use as a CSS id.
[738] Fix | Delete
*
[739] Fix | Delete
* Exported for the deprecated function wp_get_duotone_filter_id().
[740] Fix | Delete
*
[741] Fix | Delete
* @internal
[742] Fix | Delete
*
[743] Fix | Delete
* @since 6.3.0
[744] Fix | Delete
* @deprecated 6.3.0
[745] Fix | Delete
*
[746] Fix | Delete
* @param array $preset Duotone preset value as seen in theme.json.
[747] Fix | Delete
* @return string Duotone filter CSS id.
[748] Fix | Delete
*/
[749] Fix | Delete
public static function get_filter_id_from_preset( $preset ) {
[750] Fix | Delete
_deprecated_function( __FUNCTION__, '6.3.0' );
[751] Fix | Delete
[752] Fix | Delete
$filter_id = '';
[753] Fix | Delete
if ( isset( $preset['slug'] ) ) {
[754] Fix | Delete
$filter_id = self::get_filter_id( $preset['slug'] );
[755] Fix | Delete
}
[756] Fix | Delete
return $filter_id;
[757] Fix | Delete
}
[758] Fix | Delete
[759] Fix | Delete
/**
[760] Fix | Delete
* Gets the SVG for the duotone filter definition from a preset.
[761] Fix | Delete
*
[762] Fix | Delete
* Exported for the deprecated function wp_get_duotone_filter_property().
[763] Fix | Delete
*
[764] Fix | Delete
* @internal
[765] Fix | Delete
*
[766] Fix | Delete
* @since 6.3.0
[767] Fix | Delete
* @deprecated 6.3.0
[768] Fix | Delete
*
[769] Fix | Delete
* @param array $preset The duotone preset.
[770] Fix | Delete
* @return string The SVG for the filter definition.
[771] Fix | Delete
*/
[772] Fix | Delete
public static function get_filter_svg_from_preset( $preset ) {
[773] Fix | Delete
_deprecated_function( __FUNCTION__, '6.3.0' );
[774] Fix | Delete
[775] Fix | Delete
$filter_id = self::get_filter_id_from_preset( $preset );
[776] Fix | Delete
return self::get_filter_svg( $filter_id, $preset['colors'] );
[777] Fix | Delete
}
[778] Fix | Delete
[779] Fix | Delete
/**
[780] Fix | Delete
* Get the SVGs for the duotone filters.
[781] Fix | Delete
*
[782] Fix | Delete
* Example output:
[783] Fix | Delete
* <svg><defs><filter id="wp-duotone-blue-orange">…</filter></defs></svg><svg>…</svg>
[784] Fix | Delete
*
[785] Fix | Delete
* @internal
[786] Fix | Delete
*
[787] Fix | Delete
* @since 6.3.0
[788] Fix | Delete
*
[789] Fix | Delete
* @param array $sources The duotone presets.
[790] Fix | Delete
* @return string The SVGs for the duotone filters.
[791] Fix | Delete
*/
[792] Fix | Delete
private static function get_svg_definitions( $sources ) {
[793] Fix | Delete
$svgs = '';
[794] Fix | Delete
foreach ( $sources as $filter_id => $filter_data ) {
[795] Fix | Delete
$colors = $filter_data['colors'];
[796] Fix | Delete
$svgs .= self::get_filter_svg( $filter_id, $colors );
[797] Fix | Delete
}
[798] Fix | Delete
return $svgs;
[799] Fix | Delete
}
[800] Fix | Delete
[801] Fix | Delete
/**
[802] Fix | Delete
* Get the CSS for global styles.
[803] Fix | Delete
*
[804] Fix | Delete
* Example output:
[805] Fix | Delete
* body{--wp--preset--duotone--blue-orange:url('#wp-duotone-blue-orange');}
[806] Fix | Delete
*
[807] Fix | Delete
* @internal
[808] Fix | Delete
*
[809] Fix | Delete
* @since 6.3.0
[810] Fix | Delete
* @since 6.6.0 Replaced body selector with `WP_Theme_JSON::ROOT_CSS_PROPERTIES_SELECTOR`.
[811] Fix | Delete
*
[812] Fix | Delete
* @param array $sources The duotone presets.
[813] Fix | Delete
* @return string The CSS for global styles.
[814] Fix | Delete
*/
[815] Fix | Delete
private static function get_global_styles_presets( $sources ) {
[816] Fix | Delete
$css = WP_Theme_JSON::ROOT_CSS_PROPERTIES_SELECTOR . '{';
[817] Fix | Delete
foreach ( $sources as $filter_id => $filter_data ) {
[818] Fix | Delete
$slug = $filter_data['slug'];
[819] Fix | Delete
$colors = $filter_data['colors'];
[820] Fix | Delete
$css_property_name = self::get_css_custom_property_name( $slug );
[821] Fix | Delete
$declaration_value = is_string( $colors ) ? $colors : self::get_filter_url( $filter_id );
[822] Fix | Delete
$css .= "$css_property_name:$declaration_value;";
[823] Fix | Delete
}
[824] Fix | Delete
$css .= '}';
[825] Fix | Delete
return $css;
[826] Fix | Delete
}
[827] Fix | Delete
[828] Fix | Delete
/**
[829] Fix | Delete
* Enqueue a block CSS declaration for the page.
[830] Fix | Delete
*
[831] Fix | Delete
* This does not include any SVGs.
[832] Fix | Delete
*
[833] Fix | Delete
* @internal
[834] Fix | Delete
*
[835] Fix | Delete
* @since 6.3.0
[836] Fix | Delete
*
[837] Fix | Delete
* @param string $filter_id The filter ID. e.g. 'wp-duotone-000000-ffffff-2'.
[838] Fix | Delete
* @param string $duotone_selector The block's duotone selector. e.g. '.wp-block-image img'.
[839] Fix | Delete
* @param string $filter_value The filter CSS value. e.g. 'url(#wp-duotone-000000-ffffff-2)' or 'unset'.
[840] Fix | Delete
*/
[841] Fix | Delete
private static function enqueue_block_css( $filter_id, $duotone_selector, $filter_value ) {
[842] Fix | Delete
// Build the CSS selectors to which the filter will be applied.
[843] Fix | Delete
$selectors = explode( ',', $duotone_selector );
[844] Fix | Delete
[845] Fix | Delete
$selectors_scoped = array();
[846] Fix | Delete
foreach ( $selectors as $selector_part ) {
[847] Fix | Delete
/*
[848] Fix | Delete
* Assuming the selector part is a subclass selector (not a tag name)
[849] Fix | Delete
* so we can prepend the filter id class. If we want to support elements
[850] Fix | Delete
* such as `img` or namespaces, we'll need to add a case for that here.
[851] Fix | Delete
*/
[852] Fix | Delete
$selectors_scoped[] = '.' . $filter_id . trim( $selector_part );
[853] Fix | Delete
}
[854] Fix | Delete
[855] Fix | Delete
$selector = implode( ', ', $selectors_scoped );
[856] Fix | Delete
[857] Fix | Delete
self::$block_css_declarations[] = array(
[858] Fix | Delete
'selector' => $selector,
[859] Fix | Delete
'declarations' => array(
[860] Fix | Delete
'filter' => $filter_value,
[861] Fix | Delete
),
[862] Fix | Delete
);
[863] Fix | Delete
}
[864] Fix | Delete
[865] Fix | Delete
/**
[866] Fix | Delete
* Enqueue custom filter assets for the page.
[867] Fix | Delete
*
[868] Fix | Delete
* Includes an SVG filter and block CSS declaration.
[869] Fix | Delete
*
[870] Fix | Delete
* @internal
[871] Fix | Delete
*
[872] Fix | Delete
* @since 6.3.0
[873] Fix | Delete
*
[874] Fix | Delete
* @param string $filter_id The filter ID. e.g. 'wp-duotone-000000-ffffff-2'.
[875] Fix | Delete
* @param string $duotone_selector The block's duotone selector. e.g. '.wp-block-image img'.
[876] Fix | Delete
* @param string $filter_value The filter CSS value. e.g. 'url(#wp-duotone-000000-ffffff-2)' or 'unset'.
[877] Fix | Delete
* @param array $filter_data Duotone filter data with 'slug' and 'colors' keys.
[878] Fix | Delete
*/
[879] Fix | Delete
private static function enqueue_custom_filter( $filter_id, $duotone_selector, $filter_value, $filter_data ) {
[880] Fix | Delete
self::$used_svg_filter_data[ $filter_id ] = $filter_data;
[881] Fix | Delete
self::enqueue_block_css( $filter_id, $duotone_selector, $filter_value );
[882] Fix | Delete
}
[883] Fix | Delete
[884] Fix | Delete
/**
[885] Fix | Delete
* Enqueue preset assets for the page.
[886] Fix | Delete
*
[887] Fix | Delete
* Includes a CSS custom property, SVG filter, and block CSS declaration.
[888] Fix | Delete
*
[889] Fix | Delete
* @internal
[890] Fix | Delete
*
[891] Fix | Delete
* @since 6.3.0
[892] Fix | Delete
*
[893] Fix | Delete
* @param string $filter_id The filter ID. e.g. 'wp-duotone-blue-orange'.
[894] Fix | Delete
* @param string $duotone_selector The block's duotone selector. e.g. '.wp-block-image img'.
[895] Fix | Delete
* @param string $filter_value The filter CSS value. e.g. 'url(#wp-duotone-blue-orange)' or 'unset'.
[896] Fix | Delete
*/
[897] Fix | Delete
private static function enqueue_global_styles_preset( $filter_id, $duotone_selector, $filter_value ) {
[898] Fix | Delete
$global_styles_presets = self::get_all_global_styles_presets();
[899] Fix | Delete
if ( ! array_key_exists( $filter_id, $global_styles_presets ) ) {
[900] Fix | Delete
$error_message = sprintf(
[901] Fix | Delete
/* translators: 1: Duotone filter ID, 2: theme.json */
[902] Fix | Delete
__( 'The duotone id "%1$s" is not registered in %2$s settings' ),
[903] Fix | Delete
$filter_id,
[904] Fix | Delete
'theme.json'
[905] Fix | Delete
);
[906] Fix | Delete
_doing_it_wrong( __METHOD__, $error_message, '6.3.0' );
[907] Fix | Delete
return;
[908] Fix | Delete
}
[909] Fix | Delete
self::$used_global_styles_presets[ $filter_id ] = $global_styles_presets[ $filter_id ];
[910] Fix | Delete
self::enqueue_custom_filter( $filter_id, $duotone_selector, $filter_value, $global_styles_presets[ $filter_id ] );
[911] Fix | Delete
}
[912] Fix | Delete
[913] Fix | Delete
/**
[914] Fix | Delete
* Registers the style and colors block attributes for block types that support it.
[915] Fix | Delete
*
[916] Fix | Delete
* Block support is added with `supports.filter.duotone` in block.json.
[917] Fix | Delete
*
[918] Fix | Delete
* @since 6.3.0
[919] Fix | Delete
*
[920] Fix | Delete
* @param WP_Block_Type $block_type Block Type.
[921] Fix | Delete
*/
[922] Fix | Delete
public static function register_duotone_support( $block_type ) {
[923] Fix | Delete
/*
[924] Fix | Delete
* Previous `color.__experimentalDuotone` support flag is migrated
[925] Fix | Delete
* to `filter.duotone` via `block_type_metadata_settings` filter.
[926] Fix | Delete
*/
[927] Fix | Delete
if ( block_has_support( $block_type, array( 'filter', 'duotone' ), null ) ) {
[928] Fix | Delete
if ( ! $block_type->attributes ) {
[929] Fix | Delete
$block_type->attributes = array();
[930] Fix | Delete
}
[931] Fix | Delete
[932] Fix | Delete
if ( ! array_key_exists( 'style', $block_type->attributes ) ) {
[933] Fix | Delete
$block_type->attributes['style'] = array(
[934] Fix | Delete
'type' => 'object',
[935] Fix | Delete
);
[936] Fix | Delete
}
[937] Fix | Delete
}
[938] Fix | Delete
}
[939] Fix | Delete
[940] Fix | Delete
/**
[941] Fix | Delete
* Get the CSS selector for a block type.
[942] Fix | Delete
*
[943] Fix | Delete
* This handles selectors defined in `color.__experimentalDuotone` support
[944] Fix | Delete
* if `filter.duotone` support is not defined.
[945] Fix | Delete
*
[946] Fix | Delete
* @internal
[947] Fix | Delete
* @since 6.3.0
[948] Fix | Delete
*
[949] Fix | Delete
* @param WP_Block_Type $block_type Block type to check for support.
[950] Fix | Delete
* @return string|null The CSS selector or null if there is no support.
[951] Fix | Delete
*/
[952] Fix | Delete
private static function get_selector( $block_type ) {
[953] Fix | Delete
if ( ! ( $block_type instanceof WP_Block_Type ) ) {
[954] Fix | Delete
return null;
[955] Fix | Delete
}
[956] Fix | Delete
[957] Fix | Delete
/*
[958] Fix | Delete
* Backward compatibility with `supports.color.__experimentalDuotone`
[959] Fix | Delete
* is provided via the `block_type_metadata_settings` filter. If
[960] Fix | Delete
* `supports.filter.duotone` has not been set and the experimental
[961] Fix | Delete
* property has been, the experimental property value is copied into
[962] Fix | Delete
* `supports.filter.duotone`.
[963] Fix | Delete
*/
[964] Fix | Delete
$duotone_support = block_has_support( $block_type, array( 'filter', 'duotone' ) );
[965] Fix | Delete
if ( ! $duotone_support ) {
[966] Fix | Delete
return null;
[967] Fix | Delete
}
[968] Fix | Delete
[969] Fix | Delete
/*
[970] Fix | Delete
* If the experimental duotone support was set, that value is to be
[971] Fix | Delete
* treated as a selector and requires scoping.
[972] Fix | Delete
*/
[973] Fix | Delete
$experimental_duotone = isset( $block_type->supports['color']['__experimentalDuotone'] )
[974] Fix | Delete
? $block_type->supports['color']['__experimentalDuotone']
[975] Fix | Delete
: false;
[976] Fix | Delete
if ( $experimental_duotone ) {
[977] Fix | Delete
$root_selector = wp_get_block_css_selector( $block_type );
[978] Fix | Delete
return is_string( $experimental_duotone )
[979] Fix | Delete
? WP_Theme_JSON::scope_selector( $root_selector, $experimental_duotone )
[980] Fix | Delete
: $root_selector;
[981] Fix | Delete
}
[982] Fix | Delete
[983] Fix | Delete
// Regular filter.duotone support uses filter.duotone selectors with fallbacks.
[984] Fix | Delete
return wp_get_block_css_selector( $block_type, array( 'filter', 'duotone' ), true );
[985] Fix | Delete
}
[986] Fix | Delete
[987] Fix | Delete
/**
[988] Fix | Delete
* Scrape all possible duotone presets from global and theme styles and
[989] Fix | Delete
* store them in self::$global_styles_presets.
[990] Fix | Delete
*
[991] Fix | Delete
* Used in conjunction with self::render_duotone_support for blocks that
[992] Fix | Delete
* use duotone preset filters.
[993] Fix | Delete
*
[994] Fix | Delete
* @since 6.3.0
[995] Fix | Delete
*
[996] Fix | Delete
* @return array An array of global styles presets, keyed on the filter ID.
[997] Fix | Delete
*/
[998] Fix | Delete
private static function get_all_global_styles_presets() {
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function