PHP 7.4.33
Preview: class-wp-customize-custom-css-setting.php Size: 5.16 KB
/home/zcziejy/ryadselyen/customize/class-wp-customize-custom-css-setting.php
<?php
/**
 * Customize API: WP_Customize_Custom_CSS_Setting class
 *
 * This handles validation, sanitization and saving of the value.
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.7.0
 */

/**
 * Custom Setting to handle WP Custom CSS.
 *
 * @since 4.7.0
 *
 * @see WP_Customize_Setting
 */
final class WP_Customize_Custom_CSS_Setting extends WP_Customize_Setting {

	/**
	 * The setting type.
	 *
	 * @since 4.7.0
	 * @var string
	 */
	public $type = 'custom_css';

	/**
	 * Setting Transport
	 *
	 * @since 4.7.0
	 * @var string
	 */
	public $transport = 'postMessage';

	/**
	 * Capability required to edit this setting.
	 *
	 * @since 4.7.0
	 * @var string
	 */
	public $capability = 'edit_css';

	/**
	 * Stylesheet
	 *
	 * @since 4.7.0
	 * @var string
	 */
	public $stylesheet = '';

	/**
	 * WP_Customize_Custom_CSS_Setting constructor.
	 *
	 * @since 4.7.0
	 *
	 * @throws Exception If the setting ID does not match the pattern `custom_css[$stylesheet]`.
	 *
	 * @param WP_Customize_Manager $manager Customizer bootstrap instance.
	 * @param string               $id      A specific ID of the setting.
	 *                                      Can be a theme mod or option name.
	 * @param array                $args    Setting arguments.
	 */
	public function __construct( $manager, $id, $args = array() ) {
		parent::__construct( $manager, $id, $args );
		if ( 'custom_css' !== $this->id_data['base'] ) {
			throw new Exception( 'Expected custom_css id_base.' );
		}
		if ( 1 !== count( $this->id_data['keys'] ) || empty( $this->id_data['keys'][0] ) ) {
			throw new Exception( 'Expected single stylesheet key.' );
		}
		$this->stylesheet = $this->id_data['keys'][0];
	}

	/**
	 * Add filter to preview post value.
	 *
	 * @since 4.7.9
	 *
	 * @return bool False when preview short-circuits due no change needing to be previewed.
	 */
	public function preview() {
		if ( $this->is_previewed ) {
			return false;
		}
		$this->is_previewed = true;
		add_filter( 'wp_get_custom_css', array( $this, 'filter_previewed_wp_get_custom_css' ), 9, 2 );
		return true;
	}

	/**
	 * Filters `wp_get_custom_css` for applying the customized value.
	 *
	 * This is used in the preview when `wp_get_custom_css()` is called for rendering the styles.
	 *
	 * @since 4.7.0
	 *
	 * @see wp_get_custom_css()
	 *
	 * @param string $css        Original CSS.
	 * @param string $stylesheet Current stylesheet.
	 * @return string CSS.
	 */
	public function filter_previewed_wp_get_custom_css( $css, $stylesheet ) {
		if ( $stylesheet === $this->stylesheet ) {
			$customized_value = $this->post_value( null );
			if ( ! is_null( $customized_value ) ) {
				$css = $customized_value;
			}
		}
		return $css;
	}

	/**
	 * Fetch the value of the setting. Will return the previewed value when `preview()` is called.
	 *
	 * @since 4.7.0
	 *
	 * @see WP_Customize_Setting::value()
	 *
	 * @return string
	 */
	public function value() {
		if ( $this->is_previewed ) {
			$post_value = $this->post_value( null );
			if ( null !== $post_value ) {
				return $post_value;
			}
		}
		$id_base = $this->id_data['base'];
		$value   = '';
		$post    = wp_get_custom_css_post( $this->stylesheet );
		if ( $post ) {
			$value = $post->post_content;
		}
		if ( empty( $value ) ) {
			$value = $this->default;
		}

		/** This filter is documented in wp-includes/class-wp-customize-setting.php */
		$value = apply_filters( "customize_value_{$id_base}", $value, $this );

		return $value;
	}

	/**
	 * Validate a received value for being valid CSS.
	 *
	 * Checks for imbalanced braces, brackets, and comments.
	 * Notifications are rendered when the customizer state is saved.
	 *
	 * @since 4.7.0
	 * @since 4.9.0 Checking for balanced characters has been moved client-side via linting in code editor.
	 * @since 5.9.0 Renamed `$css` to `$value` for PHP 8 named parameter support.
	 *
	 * @param string $value CSS to validate.
	 * @return true|WP_Error True if the input was validated, otherwise WP_Error.
	 */
	public function validate( $value ) {
		// Restores the more descriptive, specific name for use within this method.
		$css = $value;

		$validity = new WP_Error();

		if ( preg_match( '#</?\w+#', $css ) ) {
			$validity->add( 'illegal_markup', __( 'Markup is not allowed in CSS.' ) );
		}

		if ( ! $validity->has_errors() ) {
			$validity = parent::validate( $css );
		}
		return $validity;
	}

	/**
	 * Store the CSS setting value in the custom_css custom post type for the stylesheet.
	 *
	 * @since 4.7.0
	 * @since 5.9.0 Renamed `$css` to `$value` for PHP 8 named parameter support.
	 *
	 * @param string $value CSS to update.
	 * @return int|false The post ID or false if the value could not be saved.
	 */
	public function update( $value ) {
		// Restores the more descriptive, specific name for use within this method.
		$css = $value;

		if ( empty( $css ) ) {
			$css = '';
		}

		$r = wp_update_custom_css_post(
			$css,
			array(
				'stylesheet' => $this->stylesheet,
			)
		);

		if ( is_wp_error( $r ) ) {
			return false;
		}

		$post_id = $r->ID;

		// Cache post ID in theme mod for performance to avoid additional DB query.
		if ( $this->manager->get_stylesheet() === $this->stylesheet ) {
			set_theme_mod( 'custom_css_post_id', $post_id );
		}

		return $post_id;
	}
}

Directory Contents

Dirs: 1 × Files: 38
Name Size Perms Modified Actions
user DIR
- drwxr-xr-x 2026-01-15 13:05:42
Edit Download
420 B lrw-r--r-- 2026-01-09 04:01:57
Edit Download
1.25 KB lrw-r--r-- 2023-01-10 22:43:59
Edit Download
639 B lrw-r--r-- 2023-01-10 22:44:06
Edit Download
2.96 KB lrw-r--r-- 2023-03-29 23:36:03
Edit Download
2.26 KB lrw-r--r-- 2023-01-10 22:44:00
Edit Download
3.13 KB lrw-r--r-- 2025-12-02 22:36:58
Edit Download
1.42 KB lrw-r--r-- 2023-11-07 22:41:38
Edit Download
5.16 KB lrw-r--r-- 2025-12-02 22:36:58
Edit Download
1.09 KB lrw-r--r-- 2025-12-02 22:36:58
Edit Download
9.22 KB lrw-r--r-- 2025-04-15 23:35:18
Edit Download
588 B lrw-r--r-- 2023-01-10 22:43:59
Edit Download
7.84 KB lrw-r--r-- 2025-12-02 22:36:58
Edit Download
1.74 KB lrw-r--r-- 2023-08-08 23:44:47
Edit Download
1.18 KB lrw-r--r-- 2023-01-10 22:44:04
Edit Download
9.18 KB lrw-r--r-- 2025-12-02 22:36:58
Edit Download
1.10 KB lrw-r--r-- 2023-01-10 22:44:03
Edit Download
2.08 KB lrw-r--r-- 2023-03-29 23:36:03
Edit Download
7.97 KB lrw-r--r-- 2024-07-16 23:33:44
Edit Download
27.22 KB lrw-r--r-- 2025-09-30 23:37:02
Edit Download
2.25 KB lrw-r--r-- 2024-04-02 23:32:49
Edit Download
2.75 KB lrw-r--r-- 2023-03-29 23:36:03
Edit Download
1.10 KB lrw-r--r-- 2023-01-10 22:43:59
Edit Download
716 B lrw-r--r-- 2023-01-10 22:43:58
Edit Download
18.49 KB lrw-r--r-- 2023-01-10 22:44:06
Edit Download
3.23 KB lrw-r--r-- 2023-03-29 23:36:03
Edit Download
1.67 KB lrw-r--r-- 2023-01-10 22:44:01
Edit Download
1.65 KB lrw-r--r-- 2023-01-10 22:44:04
Edit Download
10.32 KB lrw-r--r-- 2023-01-10 22:44:05
Edit Download
13.52 KB lrw-r--r-- 2025-12-02 22:36:58
Edit Download
1.03 KB lrw-r--r-- 2023-01-10 22:44:07
Edit Download
5.04 KB lrw-r--r-- 2025-12-02 22:36:58
Edit Download
11.61 KB lrw-r--r-- 2023-11-07 22:41:38
Edit Download
3.31 KB lrw-r--r-- 2024-11-12 22:37:30
Edit Download
6.79 KB lrw-r--r-- 2025-04-15 23:35:18
Edit Download
1.17 KB lrw-r--r-- 2023-01-10 22:44:01
Edit Download
686 B lrw-r--r-- 2023-01-10 22:44:05
Edit Download
1.68 KB lrw-r--r-- 2023-03-29 23:36:03
Edit Download
2.58 KB lrw-r--r-- 2023-01-10 22:44:09
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).