HEX
Server: LiteSpeed
System: Linux sg-cp4.cloudnetwork.vn 4.18.0-553.69.1.lve.el8.x86_64 #1 SMP Wed Aug 13 19:53:59 UTC 2025 x86_64
User: thu28850 (1134)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: //proc/self/cwd/wp-content/plugins/wcboost-variation-swatches/includes/customizer/customizer.php
<?php
namespace WCBoost\VariationSwatches\Customize;

defined( 'ABSPATH' ) || exit;

use WCBoost\VariationSwatches\Plugin;

/**
 * Customizer class.
 * Adds options of swatches appearance to the Customizer.
 */
class Customizer {

	const SECTION = 'wcboost_variation_swatches';

	/**
	 * The setting API
	 *
	 * @var \WCBoost\VariationSwatches\Admin\Settings
	 */
	public $settings_api;

	/**
	 * Constructor.
	 */
	public function __construct() {
		$this->settings_api = \WCBoost\VariationSwatches\Admin\Settings::instance();

		// Set priority to 20 to ensure WooCommerce section is added.
		add_action( 'customize_register', [ $this, 'add_sections' ], 20 );
		add_action( 'customize_controls_enqueue_scripts', [ $this, 'enqueue_scripts' ], 30 );
		add_action( 'customize_controls_print_styles', [ $this, 'add_styles' ] );
	}

	/**
	 * Add settings to the customizer.
	 *
	 * @param WP_Customize_Manager $wp_customize Theme Customizer object.
	 */
	public function add_sections( $wp_customize ) {
		$wp_customize->add_section(
			static::SECTION,
			[
				'title'    => esc_html__( 'Variation Swatches', 'wcboost-variation-swatches' ),
				'description' => esc_html__( 'Some of these options can be overidden in product data settings.', 'wcboost-variation-swatches' ),
				'priority' => 30,
				'panel'    => 'woocommerce',
			]
		);

		$wp_customize->add_setting(
			$this->settings_api->get_option_name( 'shape' ),
			[
				'default'              => $this->settings_api->get_default( 'shape' ),
				'type'                 => 'option',
				'capability'           => 'manage_woocommerce',
				'sanitize_callback'    => [ $this->settings_api, 'sanitize_shape' ],
			]
		);

		$wp_customize->add_control(
			$this->settings_api->get_option_name( 'shape' ),
			[
				'label'       => esc_html__( 'Swatches Shape', 'wcboost-variation-swatches' ),
				'description' => esc_html__( 'Choose the shape style of variation swatches', 'wcboost-variation-swatches' ),
				'section'     => static::SECTION,
				'type'        => 'select',
				'choices'     => $this->settings_api->get_shape_options(),
			]
		);

		include_once dirname( __FILE__ ) . '/size-control.php';

		$wp_customize->add_setting(
			$this->settings_api->get_option_name( 'size' ),
			[
				'default'              => $this->settings_api->get_default( 'size' ),
				'type'                 => 'option',
				'capability'           => 'manage_woocommerce',
				'sanitize_callback'    => [ $this->settings_api, 'sanitize_size' ],
			]
		);

		$wp_customize->add_control(
			new Size_Control(
				$wp_customize,
				$this->settings_api->get_option_name( 'size' ),
				[
					'label'       => esc_html__( 'Swatches Size', 'wcboost-variation-swatches' ),
					'description' => esc_html__( 'Set the default size of variation swatches.', 'wcboost-variation-swatches' ),
					'section'     => static::SECTION,
				]
			)
		);

		$wp_customize->add_setting(
			$this->settings_api->get_option_name( 'tooltip' ),
			[
				'default'              => $this->settings_api->get_default( 'tooltip' ),
				'type'                 => 'option',
				'capability'           => 'manage_woocommerce',
				'sanitize_callback'    => 'wc_bool_to_string',
				'sanitize_js_callback' => 'wc_string_to_bool',
			]
		);

		$wp_customize->add_control(
			$this->settings_api->get_option_name( 'tooltip' ),
			[
				'label'    => esc_html__( 'Enable tooltip', 'wcboost-variation-swatches' ),
				'section'  => static::SECTION,
				'type'     => 'checkbox',
			]
		);

		$wp_customize->add_setting(
			$this->settings_api->get_option_name( 'auto_button' ),
			[
				'default'              => $this->settings_api->get_default( 'auto_button' ),
				'type'                 => 'option',
				'capability'           => 'manage_woocommerce',
				'sanitize_callback'    => 'wc_bool_to_string',
				'sanitize_js_callback' => 'wc_string_to_bool',
			]
		);

		$wp_customize->add_control(
			$this->settings_api->get_option_name( 'auto_button' ),
			[
				'label'    => esc_html__( 'Convert default dropdowns to buttons', 'wcboost-variation-swatches' ),
				'section'  => static::SECTION,
				'type'     => 'checkbox',
			]
		);

		$wp_customize->add_setting(
			$this->settings_api->get_option_name( 'show_selected_label' ),
			[
				'default'              => $this->settings_api->get_default( 'show_selected_label' ),
				'type'                 => 'option',
				'capability'           => 'manage_woocommerce',
				'sanitize_callback'    => 'wc_bool_to_string',
				'sanitize_js_callback' => 'wc_string_to_bool',
			]
		);

		$wp_customize->add_control(
			$this->settings_api->get_option_name( 'show_selected_label' ),
			[
				'label'    => esc_html__( "Show the selected attribute's label", 'wcboost-variation-swatches' ),
				'section'  => static::SECTION,
				'type'     => 'checkbox',
			]
		);
	}

	/**
	 * CSS styles to improve our form.
	 */
	public function add_styles() {
		?>
		<style type="text/css">
			.customize-control-wcboost-variation-swatches-size .customize-control-inside input[type="text"] {
				width: auto;
				display: inline-block;
			}
		</style>
		<?php
	}

	/**
	 * Customizer scritps
	 */
	public function enqueue_scripts() {
		$suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';

		wp_enqueue_script( 'wcboost-variation-swatches-customizer', plugins_url( 'assets/js/customizer' . $suffix . '.js', WCBOOST_VARIATION_SWATCHES_FILE ), [ 'jquery', 'customize-base' ], Plugin::instance()->version, true );
	}
}

new Customizer();