38217-vm/wp-content/themes/Avada/includes/lib/inc/class-fusion-dynamic-css-inline.php
2026-02-05 17:08:59 +03:00

115 lines
3.1 KiB
PHP

<?php
/**
* Dynamic-CSS handler - Inline CSS.
*
* @package Fusion-Library
* @since 1.0.0
*/
/**
* Handle generating the dynamic CSS.
*
* @since 1.0.0
*/
class Fusion_Dynamic_CSS_Inline {
/**
* An innstance of the Fusion_Dynamic_CSS object.
*
* @access private
* @since 1.0.0
* @var object
*/
private $dynamic_css;
/**
* Constructor.
*
* @access public
* @since 1.0.0
* @param object $dynamic_css An instance of Fusion_DYnamic_CSS.
*/
public function __construct( $dynamic_css ) {
$this->dynamic_css = $dynamic_css;
$loading_action = 'wp_head';
$priority = 999;
if ( fusion_should_defer_styles_loading() ) {
$loading_action = 'wp_print_footer_scripts';
$priority = 12;
}
if ( fusion_get_option( 'media_queries_async' ) ) {
add_action( 'wp_enqueue_scripts', [ $this, 'add_inline_css' ], 111 );
add_action( $loading_action, [ $this, 'add_custom_css_to_wp_head' ], $priority );
} else {
add_action( $loading_action, [ $this, 'add_inline_css_wp_head' ], $priority );
}
}
/**
* Add Inline CSS.
* CSS will be loaded after all Avada CSS except the media queries
* and W3TC can combine it correctly.
*
* @access public
* @return void
*/
public function add_inline_css() {
if ( fusion_should_defer_styles_loading() && doing_action( 'wp_enqueue_scripts' ) ) {
add_action( 'wp_body_open', [ $this, 'add_inline_css' ] );
return;
}
if ( wp_style_is( 'fusion-builder-shortcodes' ) ) {
wp_add_inline_style( 'fusion-builder-shortcodes', wp_strip_all_tags( apply_filters( 'fusion_library_inline_dynamic_css', $this->dynamic_css->make_css() ) ) );
} else {
wp_add_inline_style( 'avada-stylesheet', wp_strip_all_tags( apply_filters( 'fusion_library_inline_dynamic_css', $this->dynamic_css->make_css() ) ) );
}
}
/**
* Add Inline CSS.
* CSS will be loaded after all Avada CSS except the media queries
* and W3TC can combine it correctly.
*
* @since 5.9.1
* @access public
* @return void
*/
public function add_custom_css_to_wp_head() {
$custom_css = apply_filters( 'fusion_library_inline_custom_css', '' );
if ( $custom_css ) {
echo '<style id="fusion-stylesheet-custom-css" type="text/css">';
/**
* Security: The use of wp_strip_all_tags() here prevents malicious attempts
* to close the <style> tag and open a <script> tag.
*/
echo wp_strip_all_tags( $custom_css ); // phpcs:ignore WordPress.Security.EscapeOutput
echo '</style>';
}
}
/**
* Add Inline CSS in wp_head.
* We need this because it has to be loaded after all other Avada CSS
* and W3TC can combine it correctly.
*
* @access public
* @return void
*/
public function add_inline_css_wp_head() {
echo '<style id="fusion-stylesheet-inline-css" type="text/css">';
/**
* Security: The use of wp_strip_all_tags() here prevents malicious attempts
* to close the <style> tag and open a <script> tag.
*/
echo wp_strip_all_tags( apply_filters( 'fusion_library_inline_dynamic_css', $this->dynamic_css->make_css() ) ); // phpcs:ignore WordPress.Security.EscapeOutput
echo '</style>';
}
}
/* Omit closing PHP tag to avoid "Headers already sent" issues. */