<?php
/**
* Storefront WooCommerce Customizer Class
*
* @package storefront
* @since 2.4.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! class_exists( 'Storefront_WooCommerce_Customizer' ) ) :
/**
* The Storefront Customizer class
*/
class Storefront_WooCommerce_Customizer extends Storefront_Customizer {
/**
* Setup class.
*
* @since 2.4.0
* @return void
*/
public function __construct() {
add_action( 'customize_register', array( $this, 'customize_register' ), 10 );
add_action( 'wp_enqueue_scripts', array( $this, 'add_customizer_css' ), 130 );
add_filter( 'storefront_setting_default_values', array( $this, 'setting_default_values' ) );
}
/**
* Returns an array of the desired default Storefront Options
*
* @param array $defaults array of default options.
* @since 2.4.0
* @return array
*/
public function setting_default_values( $defaults = array() ) {
$defaults['storefront_sticky_add_to_cart'] = true;
$defaults['storefront_product_pagination'] = true;
return $defaults;
}
/**
* Add postMessage support for site title and description for the Theme Customizer along with several other settings.
*
* @param WP_Customize_Manager $wp_customize Theme Customizer object.
* @since 2.4.0
*/
public function customize_register( $wp_customize ) {
/**
* Product Page
*/
$wp_customize->add_section(
'storefront_single_product_page',
array(
'title' => __( 'Product Page', 'storefront' ),
'priority' => 10,
'panel' => 'woocommerce',
)
);
$wp_customize->add_setting(
'storefront_product_pagination',
array(
'default' => apply_filters( 'storefront_default_product_pagination', true ),
'sanitize_callback' => 'wp_validate_boolean',
)
);
$wp_customize->add_setting(
'storefront_sticky_add_to_cart',
array(
'default' => apply_filters( 'storefront_default_sticky_add_to_cart', true ),
'sanitize_callback' => 'wp_validate_boolean',
)
);
$wp_customize->add_control(
'storefront_sticky_add_to_cart',
array(
'type' => 'checkbox',
'section' => 'storefront_single_product_page',
'label' => __( 'Sticky Add-To-Cart', 'storefront' ),
'description' => __( 'A small content bar at the top of the browser window which includes relevant product information and an add-to-cart button. It slides into view once the standard add-to-cart button has scrolled out of view.', 'storefront' ),
'priority' => 10,
)
);
$wp_customize->add_control(
'storefront_product_pagination',
array(
'type' => 'checkbox',
'section' => 'storefront_single_product_page',
'label' => __( 'Product Pagination', 'storefront' ),
'description' => __( 'Displays next and previous links on product pages. A product thumbnail is displayed with the title revealed on hover.', 'storefront' ),
'priority' => 20,
)
);
}
/**
* Get Customizer css.
*
* @see get_storefront_theme_mods()
* @since 2.4.0
* @return string $styles the css
*/
public function get_css() {
$storefront_theme_mods = $this->get_storefront_theme_mods();
$brighten_factor = apply_filters( 'storefront_brighten_factor', 25 );
$darken_factor = apply_filters( 'storefront_darken_factor', -25 );
$styles = '
a.cart-contents,
.site-header-cart .widget_shopping_cart a {
color: ' . $storefront_theme_mods['header_link_color'] . ';
}
a.cart-contents:hover,
.site-header-cart .widget_shopping_cart a:hover,
.site-header-cart:hover > li > a {
color: ' . storefront_adjust_color_brightness( $storefront_theme_mods['header_link_color'], 65 ) . ';
}
table.cart td.product-remove,
table.cart td.actions {
border-top-color: ' . $storefront_theme_mods['background_color'] . ';
}
.storefront-handheld-footer-bar ul li.cart .count {
background-color: ' . $storefront_theme_mods['header_link_color'] . ';
color: ' . $storefront_theme_mods['header_background_color'] . ';
border-color: ' . $storefront_theme_mods['header_background_color'] . ';
}
.woocommerce-tabs ul.tabs li.active a,
ul.products li.product .price,
.onsale,
.wc-block-grid__product-onsale,
.widget_search form:before,
.widget_product_search form:before {
color: ' . $storefront_theme_mods['text_color'] . ';
}
.woocommerce-breadcrumb a,
a.woocommerce-review-link,
.product_meta a {
color: ' . storefront_adjust_color_brightness( $storefront_theme_mods['text_color'], 5 ) . ';
}
.wc-block-grid__product-onsale,
.onsale {
border-color: ' . $storefront_theme_mods['text_color'] . ';
}
.star-rating span:before,
.quantity .plus, .quantity .minus,
p.stars a:hover:after,
p.stars a:after,
.star-rating span:before,
#payment .payment_methods li input[type=radio]:first-child:checked+label:before {
color: ' . $storefront_theme_mods['accent_color'] . ';
}
.widget_price_filter .ui-slider .ui-slider-range,
.widget_price_filter .ui-slider .ui-slider-handle {
background-color: ' . $storefront_theme_mods['accent_color'] . ';
}
.order_details {
background-color: ' . storefront_adjust_color_brightness( $storefront_theme_mods['background_color'], -7 ) . ';
}
.order_details > li {
border-bottom: 1px dotted ' . storefront_adjust_color_brightness( $storefront_theme_mods['background_color'], -28 ) . ';
}
.order_details:before,
.order_details:after {
background: -webkit-linear-gradient(transparent 0,transparent 0),-webkit-linear-gradient(135deg,' . storefront_adjust_color_brightness( $storefront_theme_mods['background_color'], -7 ) . ' 33.33%,transparent 33.33%),-webkit-linear-gradient(45deg,' . storefront_adjust_color_brightness( $storefront_theme_mods['background_color'], -7 ) . ' 33.33%,transparent 33.33%)
}
#order_review {
background-color: ' . $storefront_theme_mods['background_color'] . ';
}
#payment .payment_methods > li .payment_box,
#payment .place-order {
background-color: ' . storefront_adjust_color_brightness( $storefront_theme_mods['background_color'], -5 ) . ';
}
#payment .payment_methods > li:not(.woocommerce-notice) {
background-color: ' . storefront_adjust_color_brightness( $storefront_theme_mods['background_color'], -10 ) . ';
}
#payment .payment_methods > li:not(.woocommerce-notice):hover {
background-color: ' . storefront_adjust_color_brightness( $storefront_theme_mods['background_color'], -15 ) . ';
}
.woocommerce-pagination .page-numbers li .page-numbers.current {
background-color: ' . storefront_adjust_color_brightness( $storefront_theme_mods['background_color'], $darken_factor ) . ';
color: ' . storefront_adjust_color_brightness( $storefront_theme_mods['text_color'], -10 ) . ';
}
.wc-block-grid__product-onsale,
.onsale,
.woocommerce-pagination .page-numbers li .page-numbers:not(.current) {
color: ' . $storefront_theme_mods['text_color'] . ';
}
p.stars a:before,
p.stars a:hover~a:before,
p.stars.selected a.active~a:before {
color: ' . $storefront_theme_mods['text_color'] . ';
}
p.stars.selected a.active:before,
p.stars:hover a:before,
p.stars.selected a:not(.active):before,
p.stars.selected a.active:before {
color: ' . $storefront_theme_mods['accent_color'] . ';
}
.single-product div.product .woocommerce-product-gallery .woocommerce-product-gallery__trigger {
background-color: ' . $storefront_theme_mods['button_background_color'] . ';
color: ' . $storefront_theme_mods['button_text_color'] . ';
}
.single-product div.product .woocommerce-product-gallery .woocommerce-product-gallery__trigger:hover {
background-color: ' . storefront_adjust_color_brightness( $storefront_theme_mods['button_background_color'], $darken_factor ) . ';
border-color: ' . storefront_adjust_color_brightness( $storefront_theme_mods['button_background_color'], $darken_factor ) . ';
color: ' . $storefront_theme_mods['button_text_color'] . ';
}
.button.added_to_cart:focus,
.button.wc-forward:focus {
outline-color: ' . $storefront_theme_mods['accent_color'] . ';
}
.added_to_cart,
.site-header-cart .widget_shopping_cart a.button,
.wc-block-grid__products .wc-block-grid__product .wp-block-button__link {
background-color: ' . $storefront_theme_mods['button_background_color'] . ';
border-color: ' . $storefront_theme_mods['button_background_color'] . ';
color: ' . $storefront_theme_mods['button_text_color'] . ';
}
.added_to_cart:hover,
.site-header-cart .widget_shopping_cart a.button:hover,
.wc-block-grid__products .wc-block-grid__product .wp-block-button__link:hover {
background-color: ' . storefront_adjust_color_brightness( $storefront_theme_mods['button_background_color'], $darken_factor ) . ';
border-color: ' . storefront_adjust_color_brightness( $storefront_theme_mods['button_background_color'], $darken_factor ) . ';
color: ' . $storefront_theme_mods['button_text_color'] . ';
}
.added_to_cart.alt, .added_to_cart, .widget a.button.checkout {
background-color: ' . $storefront_theme_mods['button_alt_background_color'] . ';
border-color: ' . $storefront_theme_mods['button_alt_background_color'] . ';
color: ' . $storefront_theme_mods['button_alt_text_color'] . ';
}
.added_to_cart.alt:hover, .added_to_cart:hover, .widget a.button.checkout:hover {
background-color: ' . storefront_adjust_color_brightness( $storefront_theme_mods['button_alt_background_color'], $darken_factor ) . ';
border-color: ' . storefront_adjust_color_brightness( $storefront_theme_mods['button_alt_background_color'], $darken_factor ) . ';
color: ' . $storefront_theme_mods['button_alt_text_color'] . ';
}
.button.loading {
color: ' . $storefront_theme_mods['button_background_color'] . ';
}
.button.loading:hover {
background-color: ' . $storefront_theme_mods['button_background_color'] . ';
}
.button.loading:after {
color: ' . $storefront_theme_mods['button_text_color'] . ';
}
@media screen and ( min-width: 768px ) {
.site-header-cart .widget_shopping_cart,
.site-header .product_list_widget li .quantity {
color: ' . $storefront_theme_mods['header_text_color'] . ';
}
.site-header-cart .widget_shopping_cart .buttons,
.site-header-cart .widget_shopping_cart .total {
background-color: ' . storefront_adjust_color_brightness( $storefront_theme_mods['header_background_color'], -10 ) . ';
}
.site-header-cart .widget_shopping_cart {
background-color: ' . storefront_adjust_color_brightness( $storefront_theme_mods['header_background_color'], -15 ) . ';
}
}';
if ( ! class_exists( 'Storefront_Product_Pagination' ) ) {
$styles .= '
.storefront-product-pagination a {
color: ' . $storefront_theme_mods['text_color'] . ';
background-color: ' . $storefront_theme_mods['background_color'] . ';
}';
}
if ( ! class_exists( 'Storefront_Sticky_Add_to_Cart' ) ) {
$styles .= '
.storefront-sticky-add-to-cart {
color: ' . $storefront_theme_mods['text_color'] . ';
background-color: ' . $storefront_theme_mods['background_color'] . ';
}
.storefront-sticky-add-to-cart a:not(.button) {
color: ' . $storefront_theme_mods['header_link_color'] . ';
}';
}
return apply_filters( 'storefront_customizer_woocommerce_css', $styles );
}
/**
* Add CSS in <head> for styles handled by the theme customizer
*
* @since 2.4.0
* @return void
*/
public function add_customizer_css() {
wp_add_inline_style( 'storefront-woocommerce-style', $this->get_css() );
}
}
endif;
return new Storefront_WooCommerce_Customizer();