WP_Interactivity_API::merge_style_property
Merges an individual style property in the style attribute of an HTML element, updating or removing the property when necessary.
If a property is modified, the old one is removed and the new one is added at the end of the list.
Example:
merge_style_property( 'color:green;', 'color', 'red' ) => 'color:red;' merge_style_property( 'background:green;', 'color', 'red' ) => 'background:green;color:red;' merge_style_property( 'color:green;', 'color', null ) => ''
Method of the class: WP_Interactivity_API{}
No Hooks.
Returns
String. The new style attribute value after the specified property has been added, updated or removed.
Usage
// private - for code of main (parent) class only $result = $this->merge_style_property( $style_attribute_value, $style_property_name, $style_property_value ): string;
- $style_attribute_value(string) (required)
- The current style attribute value.
- $style_property_name(string) (required)
- The style property name to set.
- $style_property_value(string|false|null) (required)
- The value to set for the style property. With false, null or an empty string, it removes the style property.
Changelog
| Since 6.5.0 | Introduced. |
WP_Interactivity_API::merge_style_property() WP Interactivity API::merge style property code WP 7.0
private function merge_style_property( string $style_attribute_value, string $style_property_name, $style_property_value ): string {
$style_assignments = explode( ';', $style_attribute_value );
$result = array();
$style_property_value = ! empty( $style_property_value ) ? rtrim( trim( $style_property_value ), ';' ) : null;
$new_style_property = $style_property_value ? $style_property_name . ':' . $style_property_value . ';' : '';
// Generates an array with all the properties but the modified one.
foreach ( $style_assignments as $style_assignment ) {
if ( empty( trim( $style_assignment ) ) ) {
continue;
}
list( $name, $value ) = explode( ':', $style_assignment );
if ( trim( $name ) !== $style_property_name ) {
$result[] = trim( $name ) . ':' . trim( $value ) . ';';
}
}
// Adds the new/modified property at the end of the list.
$result[] = $new_style_property;
return implode( '', $result );
}