Astra_Ext_Woocommerce_Loader
Description
Source
File: addons/woocommerce/classes/class-astra-ext-woocommerce-loader.php
class Astra_Ext_Woocommerce_Loader {
// phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedClassFound
// @codingStandardsIgnoreEnd
/**
* Member Variable
*
* @var instance
*/
private static $instance;
/**
* Initiator
*/
public static function get_instance() {
if ( ! isset( self::$instance ) ) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Constructor
*/
public function __construct() {
add_filter( 'astra_theme_defaults', array( $this, 'theme_defaults' ) );
add_action( 'customize_register', array( $this, 'customize_register' ), 2 );
add_action( 'customize_preview_init', array( $this, 'preview_scripts' ) );
add_filter( 'astra_woo_shop_hover_style', array( $this, 'woo_shop_hover_style_callback' ) );
add_filter( 'wc_add_to_cart_message_html', array( $this, 'disable_woo_cart_msg' ), 10, 2 );
}
/**
* Disable add to cart messages for AJAX request.
*
* @since 1.1.0
* @param string $message add to cart message.
* @param int $product_id product ID.
* @return string
*/
public function disable_woo_cart_msg( $message, $product_id ) {
$is_ajax_add_to_cart = astra_get_option( 'single-product-ajax-add-to-cart' );
if ( wp_doing_ajax() && '1' == $is_ajax_add_to_cart ) {
return null;
}
return $message;
}
/**
* Woo Shop hover styles.
*
* @since 1.1.0
* @param array $styles Hover styles.
* @return array
*/
public function woo_shop_hover_style_callback( $styles ) {
$styles['fade'] = __( 'Fade', 'astra-addon' );
$styles['zoom'] = __( 'Zoom', 'astra-addon' );
$styles['zoom-fade'] = __( 'Zoom Fade', 'astra-addon' );
return $styles;
}
/**
* Set Options Default Values
*
* @param array $defaults Astra options default value array.
* @return array
*/
public function theme_defaults( $defaults ) {
// Shop page.
$defaults['shop-style'] = 'shop-page-grid-style';
$defaults['shop-product-align'] = 'align-left';
$defaults['product-sale-percent-value'] = '-[value]%';
$defaults['product-sale-style'] = 'circle';
$defaults['product-sale-notification'] = 'default';
$defaults['shop-page-title-display'] = true;
$defaults['shop-breadcrumb-display'] = true;
$defaults['shop-toolbar-display'] = true;
$defaults['shop-active-filters-display'] = true;
// Off Canvas.
$defaults['shop-off-canvas-trigger-type'] = 'disable';
$defaults['shop-filter-trigger-link'] = __( 'Filter', 'astra-addon' );
$defaults['shop-filter-trigger-custom-class'] = '';
$defaults['shop-title-disable'] = false;
$defaults['shop-price-disable'] = false;
$defaults['shop-rating-disable'] = false;
$defaults['shop-cart-button-disable'] = false;
$defaults['shop-description-disable'] = true;
$defaults['shop-category-disable'] = true;
$defaults['shop-quick-view-enable'] = 'disabled';
$defaults['shop-quick-view-stick-cart'] = false;
$defaults['shop-product-shadow'] = 0;
$defaults['shop-product-shadow-hover'] = 0;
$defaults['shop-button-v-padding'] = '';
$defaults['shop-button-h-padding'] = '';
$defaults['shop-pagination'] = 'number';
$defaults['shop-pagination-style'] = 'square';
$defaults['shop-infinite-scroll-event'] = 'scroll';
$defaults['shop-load-more-text'] = __( 'Load More', 'astra-addon' );
// Single product page.
$defaults['single-product-related-display'] = true;
$defaults['single-product-image-zoom-effect'] = true;
$defaults['single-product-ajax-add-to-cart'] = false;
$defaults['single-product-related-upsell-grid'] = array(
'desktop' => 4,
'tablet' => 3,
'mobile' => 2,
);
$defaults['single-product-related-upsell-per-page'] = 4;
$defaults['single-product-image-width'] = 50;
$defaults['single-product-gallery-layout'] = 'horizontal';
$defaults['single-product-structure'] = array(
'title',
'ratings',
'price',
'short_desc',
'add_cart',
'meta',
);
$defaults['single-product-tabs-display'] = true;
$defaults['single-product-tabs-layout'] = 'horizontal';
$defaults['single-product-up-sells-display'] = true;
$defaults['single-product-nav-style'] = 'disable';
// Checkout.
$defaults['two-step-checkout'] = false;
$defaults['checkout-labels-as-placeholders'] = false;
$defaults['checkout-order-notes-display'] = true;
$defaults['checkout-coupon-display'] = true;
$defaults['checkout-persistence-form-data'] = false;
$defaults['checkout-content-width'] = 'default';
$defaults['checkout-content-max-width'] = 1200;
// General.
$defaults['woo-header-cart-icon'] = 'default';
$defaults['woo-header-cart-icon-style'] = 'none';
$defaults['woo-header-cart-icon-color'] = '';
$defaults['woo-header-cart-border-width'] = 2;
$defaults['woo-header-cart-icon-radius'] = 3;
$defaults['woo-header-cart-total-display'] = true;
$defaults['woo-header-cart-title-display'] = true;
$defaults['woo-header-cart-product-count-color'] = '';
// General Product Price Typo.
$defaults['font-family-product-price'] = 'inherit';
$defaults['font-weight-product-price'] = 'inherit';
// Single Product Title Typo.
$defaults['font-family-product-title'] = 'inherit';
$defaults['font-weight-product-title'] = 'inherit';
$defaults['text-transform-product-title'] = '';
$defaults['line-height-product-title'] = '';
$defaults['font-size-product-title'] = array(
'desktop' => '',
'tablet' => '',
'mobile' => '',
'desktop-unit' => 'px',
'tablet-unit' => 'px',
'mobile-unit' => 'px',
);
$defaults['font-family-product-content'] = 'inherit';
$defaults['font-weight-product-content'] = 'inherit';
$defaults['text-transform-product-content'] = '';
$defaults['line-height-product-content'] = '';
$defaults['font-size-product-content'] = array(
'desktop' => '',
'tablet' => '',
'mobile' => '',
'desktop-unit' => 'px',
'tablet-unit' => 'px',
'mobile-unit' => 'px',
);
// Single Product Price Typo.
$defaults['font-family-product-price'] = 'inherit';
$defaults['font-weight-product-price'] = 'inherit';
$defaults['line-height-product-price'] = '';
$defaults['font-size-product-price'] = array(
'desktop' => '',
'tablet' => '',
'mobile' => '',
'desktop-unit' => 'px',
'tablet-unit' => 'px',
'mobile-unit' => 'px',
);
// Single Product Breadcrumb Typo.
$defaults['font-family-product-breadcrumb'] = 'inherit';
$defaults['font-weight-product-breadcrumb'] = 'inherit';
$defaults['text-transform-product-breadcrumb'] = '';
$defaults['line-height-product-breadcrumb'] = '';
$defaults['font-size-product-breadcrumb'] = array(
'desktop' => '',
'tablet' => '',
'mobile' => '',
'desktop-unit' => 'px',
'tablet-unit' => 'px',
'mobile-unit' => 'px',
);
// Shop Product Title Typo.
$defaults['font-family-shop-product-title'] = 'inherit';
$defaults['font-weight-shop-product-title'] = 'inherit';
$defaults['text-transform-shop-product-title'] = '';
$defaults['line-height-shop-product-title'] = '';
$defaults['font-size-shop-product-title'] = array(
'desktop' => '',
'tablet' => '',
'mobile' => '',
'desktop-unit' => 'px',
'tablet-unit' => 'px',
'mobile-unit' => 'px',
);
// Shop Product Price Typo.
$defaults['font-family-shop-product-price'] = 'inherit';
$defaults['font-weight-shop-product-price'] = 'inherit';
$defaults['line-height-shop-product-price'] = '';
$defaults['font-size-shop-product-price'] = array(
'desktop' => '',
'tablet' => '',
'mobile' => '',
'desktop-unit' => 'px',
'tablet-unit' => 'px',
'mobile-unit' => 'px',
);
// Shop Product Category Typo.
$defaults['font-family-shop-product-content'] = 'inherit';
$defaults['font-weight-shop-product-content'] = 'inherit';
$defaults['text-transform-shop-product-content'] = '';
$defaults['line-height-shop-product-content'] = '';
$defaults['font-size-shop-product-content'] = array(
'desktop' => '',
'tablet' => '',
'mobile' => '',
'desktop-unit' => 'px',
'tablet-unit' => 'px',
'mobile-unit' => 'px',
);
// Single Product Colors.
$defaults['single-product-title-color'] = '';
$defaults['single-product-price-color'] = '';
$defaults['single-product-content-color'] = '';
$defaults['single-product-breadcrumb-color'] = '';
// Shop Product Colors.
$defaults['shop-product-title-color'] = '';
$defaults['shop-product-price-color'] = '';
$defaults['shop-product-content-color'] = '';
// General Colors.
$defaults['single-product-rating-color'] = '';
return $defaults;
}
/**
* Add postMessage support for site title and description for the Theme Customizer.
*
* @param WP_Customize_Manager $wp_customize Theme Customizer object.
*/
public function customize_register( $wp_customize ) {
/**
* Register Partials
*/
require_once ASTRA_ADDON_EXT_WOOCOMMERCE_DIR . 'classes/class-astra-customizer-ext-woocommerce-partials.php';
/**
* Register Sections & Panels
*/
require_once ASTRA_ADDON_EXT_WOOCOMMERCE_DIR . 'classes/class-astra-woocommerce-panels-and-sections.php';
/**
* Sections
*/
require_once ASTRA_ADDON_EXT_WOOCOMMERCE_DIR . 'classes/sections/class-astra-woocommerce-general-configs.php';
require_once ASTRA_ADDON_EXT_WOOCOMMERCE_DIR . 'classes/sections/class-astra-woocommerce-shop-configs.php';
require_once ASTRA_ADDON_EXT_WOOCOMMERCE_DIR . 'classes/sections/class-astra-woocommerce-shop-single-configs.php';
require_once ASTRA_ADDON_EXT_WOOCOMMERCE_DIR . 'classes/sections/class-astra-woocommerce-checkout-configs.php';
require_once ASTRA_ADDON_EXT_WOOCOMMERCE_DIR . 'classes/sections/class-astra-woocommerce-general-colors-configs.php';
require_once ASTRA_ADDON_EXT_WOOCOMMERCE_DIR . 'classes/sections/class-astra-woocommerce-shop-single-typo-configs.php';
require_once ASTRA_ADDON_EXT_WOOCOMMERCE_DIR . 'classes/sections/class-astra-woocommerce-shop-single-colors-configs.php';
require_once ASTRA_ADDON_EXT_WOOCOMMERCE_DIR . 'classes/sections/class-astra-woocommerce-shop-typo-configs.php';
require_once ASTRA_ADDON_EXT_WOOCOMMERCE_DIR . 'classes/sections/class-astra-woocommerce-shop-colors-configs.php';
}
/**
* Customizer Controls
*
* @see 'astra-customizer-preview-js' panel in parent theme
*/
public function preview_scripts() {
if ( SCRIPT_DEBUG ) {
$js_path = 'assets/js/unminified/customizer-preview.js';
} else {
$js_path = 'assets/js/minified/customizer-preview.min.js';
}
wp_register_script( 'ast-woocommerce-customizer-preview', ASTRA_ADDON_EXT_WOOCOMMERCE_URI . $js_path, array( 'customize-preview', 'astra-customizer-preview-js' ), ASTRA_EXT_VER, true );
$localize_array = array(
'cart_hash_key' => WC()->ajax_url() . '-wc_cart_hash',
);
wp_localize_script( 'ast-woocommerce-customizer-preview', 'ast_woocommerce', $localize_array );
wp_enqueue_script( 'ast-woocommerce-customizer-preview' );
}
}
Expand full source code Collapse full source code View on Trac
Methods
- __construct — Constructor
- controls_scripts — Customizer Controls
- customize_register — Add postMessage support for site title and description for the Theme Customizer.
- customize_register_old — Add postMessage support for site title and description for the Theme Customizer.
- declare_woo_compatibility — Declare Woo HPOS & New Product Editor Compatibility.
- disable_woo_cart_msg — Disable add to cart messages for AJAX request.
- get_instance — Initiator
- preview_scripts — Customizer Controls
- theme_defaults — Set Options Default Values
- woo_shop_hover_style_callback — Woo Shop hover styles.