WP_Style_Engine_CSS_Rule example


    public static function compile_css( $css_declarations$css_selector ) {
        if ( empty( $css_declarations ) || ! is_array( $css_declarations ) ) {
            return '';
        }

        // Return an entire rule if there is a selector.         if ( $css_selector ) {
            $css_rule = new WP_Style_Engine_CSS_Rule( $css_selector$css_declarations );
            return $css_rule->get_css();
        }

        $css_declarations = new WP_Style_Engine_CSS_Declarations( $css_declarations );
        return $css_declarations->get_declarations_string();
    }

    /** * Returns a compiled stylesheet from stored CSS rules. * * @since 6.1.0 * * @param WP_Style_Engine_CSS_Rule[] $css_rules An array of WP_Style_Engine_CSS_Rule objects * from a store or otherwise. * @param array $options { * Optional. An array of options. Default empty array. * * @type string|null $context An identifier describing the origin of the style object, * e.g. 'block-supports' or 'global-styles'. Default 'block-supports'. * When set, the style engine will attempt to store the CSS rules. * @type bool $optimize Whether to optimize the CSS output, e.g. combine rules. * Default true. * @type bool $prettify Whether to add new lines and indents to output. * Defaults to whether the `SCRIPT_DEBUG` constant is defined. * } * @return string A compiled stylesheet from stored CSS rules. */
$css_rule_objects = array();
    foreach ( $css_rules as $css_rule ) {
        if ( empty( $css_rule['selector'] ) || empty( $css_rule['declarations'] ) || ! is_array( $css_rule['declarations'] ) ) {
            continue;
        }

        if ( ! empty( $options['context'] ) ) {
            WP_Style_Engine::store_css_rule( $options['context']$css_rule['selector']$css_rule['declarations'] );
        }

        $css_rule_objects[] = new WP_Style_Engine_CSS_Rule( $css_rule['selector']$css_rule['declarations'] );
    }

    if ( empty( $css_rule_objects ) ) {
        return '';
    }

    return WP_Style_Engine::compile_stylesheet_from_css_rules( $css_rule_objects$options );
}

/** * Returns compiled CSS from a store, if found. * * @since 6.1.0 * * @param string $context A valid context name, corresponding to an existing store key. * @param array $options { * Optional. An array of options. Default empty array. * * @type bool $optimize Whether to optimize the CSS output, e.g. combine rules. * Default true. * @type bool $prettify Whether to add new lines and indents to output. * Defaults to whether the `SCRIPT_DEBUG` constant is defined. * } * @return string A compiled CSS string. */

    public function add_rule( $selector ) {
        $selector = trim( $selector );

        // Bail early if there is no selector.         if ( empty( $selector ) ) {
            return;
        }

        // Create the rule if it doesn't exist.         if ( empty( $this->rules[ $selector ] ) ) {
            $this->rules[ $selector ] = new WP_Style_Engine_CSS_Rule( $selector );
        }

        return $this->rules[ $selector ];
    }

    /** * Removes a selector from the store. * * @since 6.1.0 * * @param string $selector The CSS selector. */
$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 );
        }
    }
}
Home | Imprint | This part of the site doesn't use cookies.