diff options
Diffstat (limited to 'inc/compatibility/woocommerce')
8 files changed, 2635 insertions, 2635 deletions
diff --git a/inc/compatibility/woocommerce/class-astra-woocommerce.php b/inc/compatibility/woocommerce/class-astra-woocommerce.php index 91cd6ef..f9a9a81 100644 --- a/inc/compatibility/woocommerce/class-astra-woocommerce.php +++ b/inc/compatibility/woocommerce/class-astra-woocommerce.php @@ -1,1819 +1,1819 @@ -<?php
-/**
- * WooCommerce Compatibility File.
- *
- * @link https://woocommerce.com/
- *
- * @package Astra
- */
-
-// If plugin - 'WooCommerce' not exist then return.
-if ( ! class_exists( 'WooCommerce' ) ) {
- return;
-}
-
-/**
- * Astra WooCommerce Compatibility
- */
-if ( ! class_exists( 'Astra_Woocommerce' ) ) :
-
- /**
- * Astra WooCommerce Compatibility
- *
- * @since 1.0.0
- */
- class Astra_Woocommerce {
-
- /**
- * Member Variable
- *
- * @var object 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() {
-
- require_once ASTRA_THEME_DIR . 'inc/compatibility/woocommerce/woocommerce-common-functions.php';// phpcs:ignore: WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
-
- add_filter( 'woocommerce_enqueue_styles', array( $this, 'woo_filter_style' ) );
-
- add_filter( 'astra_theme_defaults', array( $this, 'theme_defaults' ) );
-
- add_action( 'after_setup_theme', array( $this, 'setup_theme' ) );
-
- // Register Store Sidebars.
- add_action( 'widgets_init', array( $this, 'store_widgets_init' ), 15 );
- // Replace Store Sidebars.
- add_filter( 'astra_get_sidebar', array( $this, 'replace_store_sidebar' ) );
- // Store Sidebar Layout.
- add_filter( 'astra_page_layout', array( $this, 'store_sidebar_layout' ) );
- // Store Content Layout.
- add_filter( 'astra_get_content_layout', array( $this, 'store_content_layout' ) );
-
- add_action( 'woocommerce_before_main_content', array( $this, 'before_main_content_start' ) );
- add_action( 'woocommerce_after_main_content', array( $this, 'before_main_content_end' ) );
- add_filter( 'wp_enqueue_scripts', array( $this, 'add_styles' ) );
- add_action( 'wp', array( $this, 'shop_customization' ), 5 );
- add_action( 'wp_head', array( $this, 'single_product_customization' ), 5 );
- add_action( 'wp', array( $this, 'woocommerce_init' ), 1 );
- add_action( 'wp', array( $this, 'woocommerce_checkout' ) );
- add_action( 'wp', array( $this, 'shop_meta_option' ), 1 );
- add_action( 'wp', array( $this, 'cart_page_upselles' ) );
-
- add_filter( 'loop_shop_columns', array( $this, 'shop_columns' ) );
- add_filter( 'loop_shop_per_page', array( $this, 'shop_no_of_products' ) );
- add_filter( 'body_class', array( $this, 'shop_page_products_item_class' ) );
- add_filter( 'post_class', array( $this, 'single_product_class' ) );
- add_filter( 'woocommerce_product_get_rating_html', array( $this, 'rating_markup' ), 10, 3 );
- add_filter( 'woocommerce_output_related_products_args', array( $this, 'related_products_args' ) );
-
- // Add Cart icon in Menu.
- add_filter( 'astra_get_dynamic_header_content', array( $this, 'astra_header_cart' ), 10, 3 );
-
- // Add Cart option in dropdown.
- add_filter( 'astra_header_section_elements', array( $this, 'header_section_elements' ) );
-
- // Cart fragment.
- if ( defined( 'WC_VERSION' ) && version_compare( WC_VERSION, '2.3', '>=' ) ) {
- add_filter( 'woocommerce_add_to_cart_fragments', array( $this, 'cart_link_fragment' ) );
- } else {
- add_filter( 'add_to_cart_fragments', array( $this, 'cart_link_fragment' ) );
- }
-
- add_action( 'woocommerce_before_shop_loop_item_title', array( $this, 'product_flip_image' ), 10 );
- add_filter( 'woocommerce_subcategory_count_html', array( $this, 'subcategory_count_markup' ), 10, 2 );
-
- add_action( 'customize_register', array( $this, 'customize_register' ), 2 );
-
- add_filter( 'woocommerce_get_stock_html', 'astra_woo_product_in_stock', 10, 2 );
-
- add_filter( 'astra_schema_body', array( $this, 'remove_body_schema' ) );
-
- // Header Cart Icon.
- add_action( 'astra_woo_header_cart_icons_before', array( $this, 'header_cart_icon_markup' ) );
-
- add_action( 'astra_cart_in_menu_class', array( $this, 'header_cart_icon_class' ), 99 );
-
- }
-
- /**
- * Header Cart Extra Icons markup
- *
- * @return void;
- */
- public function header_cart_icon_markup() {
-
- if ( false === Astra_Builder_Helper::$is_header_footer_builder_active && ! defined( 'ASTRA_EXT_VER' ) ) {
- return;
- }
-
- $icon = astra_get_option( 'woo-header-cart-icon' );
- $cart_total_display = astra_get_option( 'woo-header-cart-total-display' );
- $cart_count_display = apply_filters( 'astra_header_cart_count', true );
- $cart_title_display = astra_get_option( 'woo-header-cart-title-display' );
- $cart_title = apply_filters( 'astra_header_cart_title', __( 'Cart', 'astra' ) );
-
- $cart_title_markup = '<span class="ast-woo-header-cart-title">' . esc_html( $cart_title ) . '</span>';
- $cart_total_markup = '';
- if ( null !== WC()->cart ) {
- $cart_total_markup = '<span class="ast-woo-header-cart-total">' . WC()->cart->get_cart_subtotal() . '</span>';
- }
-
- // Cart Title & Cart Cart total markup.
- $cart_info_markup = sprintf(
- '<span class="ast-woo-header-cart-info-wrap">
- %1$s
- %2$s
- %3$s
- </span>',
- ( $cart_title_display ) ? $cart_title_markup : '',
- ( $cart_total_display && $cart_title_display ) ? '/' : '',
- ( $cart_total_display ) ? $cart_total_markup : ''
- );
-
- $cart_contents_count = 0;
- if ( null !== WC()->cart ) {
- $cart_contents_count = WC()->cart->get_cart_contents_count();
- }
-
- // Cart Icon markup with total number of items.
- $cart_icon = sprintf(
- '<i class="astra-icon ast-icon-shopping-%1$s %2$s"
- %3$s
- >%4$s</i>',
- ( $icon ) ? $icon : '',
- ( $cart_count_display ) ? '' : 'no-cart-total',
- ( $cart_count_display ) ? 'data-cart-total="' . $cart_contents_count . '"' : '',
- ( $icon ) ? ( ( false !== Astra_Icons::is_svg_icons() ) ? Astra_Icons::get_icons( $icon ) : '' ) : ''
- );
-
- // Theme's default icon with cart title and cart total.
- if ( 'default' == $icon || ! defined( 'ASTRA_EXT_VER' ) || ( defined( 'ASTRA_EXT_VER' ) && ! Astra_Ext_Extension::is_active( 'woocommerce' ) ) ) {
- // Cart Total or Cart Title enable then only add markup.
- if ( $cart_title_display || $cart_total_display ) {
- echo $cart_info_markup; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
- }
- } else {
-
- // Remove Default cart icon added by theme.
- add_filter( 'astra_woo_default_header_cart_icon', '__return_false' );
-
- /* translators: 1: Cart Title Markup, 2: Cart Icon Markup */
- printf(
- '<div class="ast-addon-cart-wrap">
- %1$s
- %2$s
- </div>',
- ( $cart_title_display || $cart_total_display ) ? $cart_info_markup : '', // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
- ( $cart_icon ) ? $cart_icon : '' // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
- );
- }
- }
-
- /**
- * Header Cart Icon Class
- *
- * @param array $classes Default argument array.
- *
- * @return array;
- */
- public function header_cart_icon_class( $classes ) {
-
- if ( false === Astra_Builder_Helper::$is_header_footer_builder_active && ! defined( 'ASTRA_EXT_VER' ) ) {
- return $classes;
- }
-
- $header_cart_icon_style = astra_get_option( 'woo-header-cart-icon-style' );
-
- $classes[] = 'ast-menu-cart-' . $header_cart_icon_style;
- $header_cart_icon_has_color = astra_get_option( 'woo-header-cart-icon-color' );
- if ( ! empty( $header_cart_icon_has_color ) && ( 'none' !== $header_cart_icon_style ) ) {
- $classes[] = 'ast-menu-cart-has-color';
- }
-
- return $classes;
- }
-
- /**
- * Remove body schema when using WooCommerce template.
- * WooCommerce adds it's own product schema hence schema data from Astra should be disabled here.
- *
- * @since 1.8.0
- * @param String $schema Schema markup.
- * @return String
- */
- public function remove_body_schema( $schema ) {
- if ( is_woocommerce() ) {
- $schema = '';
- }
-
- return $schema;
- }
-
- /**
- * Rating Markup
- *
- * @since 1.2.2
- * @param string $html Rating Markup.
- * @param float $rating Rating being shown.
- * @param int $count Total number of ratings.
- * @return string
- */
- public function rating_markup( $html, $rating, $count ) {
-
- if ( 0 == $rating ) {
- $html = '<div class="star-rating">';
- $html .= wc_get_star_rating_html( $rating, $count );
- $html .= '</div>';
- }
- return $html;
- }
-
- /**
- * Cart Page Upselles products.
- *
- * @return void
- */
- public function cart_page_upselles() {
-
- $upselles_enabled = astra_get_option( 'enable-cart-upsells' );
- if ( ! $upselles_enabled ) {
- remove_action( 'woocommerce_cart_collaterals', 'woocommerce_cross_sell_display' );
- }
- }
-
- /**
- * Subcategory Count Markup
- *
- * @param array $styles Css files.
- *
- * @return array
- */
- public function woo_filter_style( $styles ) {
-
- /* Directory and Extension */
- $file_prefix = ( SCRIPT_DEBUG ) ? '' : '.min';
- $dir_name = ( SCRIPT_DEBUG ) ? 'unminified' : 'minified';
-
- $css_uri = ASTRA_THEME_URI . 'assets/css/' . $dir_name . '/compatibility/woocommerce/';
-
- // Register & Enqueue Styles.
- // Generate CSS URL.
-
- if ( ! Astra_Builder_Helper::apply_flex_based_css() ) {
- $styles = array(
- 'woocommerce-layout' => array(
- 'src' => $css_uri . 'woocommerce-layout' . $file_prefix . '.css',
- 'deps' => '',
- 'version' => ASTRA_THEME_VERSION,
- 'media' => 'all',
- 'has_rtl' => true,
- ),
- 'woocommerce-smallscreen' => array(
- 'src' => $css_uri . 'woocommerce-smallscreen' . $file_prefix . '.css',
- 'deps' => 'woocommerce-layout',
- 'version' => ASTRA_THEME_VERSION,
- 'media' => 'only screen and (max-width: ' . apply_filters( 'woocommerce_style_smallscreen_breakpoint', astra_get_tablet_breakpoint() . 'px' ) . ')',
- 'has_rtl' => true,
- ),
- 'woocommerce-general' => array(
- 'src' => $css_uri . 'woocommerce' . $file_prefix . '.css',
- 'deps' => '',
- 'version' => ASTRA_THEME_VERSION,
- 'media' => 'all',
- 'has_rtl' => true,
- ),
- );
- } else {
- $styles = array(
- 'woocommerce-layout' => array(
- 'src' => $css_uri . 'woocommerce-layout-grid' . $file_prefix . '.css',
- 'deps' => '',
- 'version' => ASTRA_THEME_VERSION,
- 'media' => 'all',
- 'has_rtl' => true,
- ),
- 'woocommerce-smallscreen' => array(
- 'src' => $css_uri . 'woocommerce-smallscreen-grid' . $file_prefix . '.css',
- 'deps' => 'woocommerce-layout',
- 'version' => ASTRA_THEME_VERSION,
- 'media' => 'only screen and (max-width: ' . apply_filters( 'woocommerce_style_smallscreen_breakpoint', astra_get_tablet_breakpoint() . 'px' ) . ')',
- 'has_rtl' => true,
- ),
- 'woocommerce-general' => array(
- 'src' => $css_uri . 'woocommerce-grid' . $file_prefix . '.css',
- 'deps' => '',
- 'version' => ASTRA_THEME_VERSION,
- 'media' => 'all',
- 'has_rtl' => true,
- ),
- );
- }
-
- return $styles;
- }
-
- /**
- * Subcategory Count Markup
- *
- * @param mixed $content Count Markup.
- * @param object $category Object of Category.
- * @return mixed
- */
- public function subcategory_count_markup( $content, $category ) {
-
- $content = sprintf( // WPCS: XSS OK.
- /* translators: 1: number of products */
- _nx( '%1$s Product', '%1$s Products', $category->count, 'product categories', 'astra' ),
- number_format_i18n( $category->count )
- );
-
- return '<mark class="count">' . $content . '</mark>';
- }
-
- /**
- * Product Flip Image
- */
- public function product_flip_image() {
-
- global $product;
-
- $hover_style = astra_get_option( 'shop-hover-style' );
-
- if ( 'swap' === $hover_style ) {
-
- $attachment_ids = $product->get_gallery_image_ids();
-
- if ( $attachment_ids ) {
-
- $image_size = apply_filters( 'single_product_archive_thumbnail_size', 'shop_catalog' );
-
- echo apply_filters( 'astra_woocommerce_product_flip_image', wp_get_attachment_image( reset( $attachment_ids ), $image_size, false, array( 'class' => 'show-on-hover' ) ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
- }
- }
- }
-
- /**
- * Theme Defaults.
- *
- * @param array $defaults Array of options value.
- * @return array
- */
- public function theme_defaults( $defaults ) {
-
- // Container.
- $defaults['woocommerce-content-layout'] = 'plain-container';
-
- // Sidebar.
- $defaults['woocommerce-sidebar-layout'] = 'no-sidebar';
- $defaults['single-product-sidebar-layout'] = 'default';
-
- /* Shop */
- $defaults['shop-grids'] = array(
- 'desktop' => 4,
- 'tablet' => 3,
- 'mobile' => 2,
- );
- $defaults['shop-no-of-products'] = '12';
- $defaults['shop-product-structure'] = array(
- 'category',
- 'title',
- 'ratings',
- 'price',
- 'add_cart',
- );
- $defaults['shop-hover-style'] = '';
-
- /* Single */
- $defaults['single-product-breadcrumb-disable'] = false;
-
- /* Cart */
- $defaults['enable-cart-upsells'] = true;
-
- $defaults['shop-archive-width'] = 'default';
- $defaults['shop-archive-max-width'] = 1200;
-
- return $defaults;
- }
-
- /**
- * Update Shop page grid
- *
- * @param int $col Shop Column.
- * @return int
- */
- public function shop_columns( $col ) {
-
- $col = astra_get_option( 'shop-grids' );
- return $col['desktop'];
- }
-
- /**
- * Check if the current page is a Product Subcategory page or not.
- *
- * @param integer $category_id Current page Category ID.
- * @return boolean
- */
- public function astra_woo_is_subcategory( $category_id = null ) {
- if ( is_tax( 'product_cat' ) ) {
- if ( empty( $category_id ) ) {
- $category_id = get_queried_object_id();
- }
- $category = get_term( get_queried_object_id(), 'product_cat' );
- if ( empty( $category->parent ) ) {
- return false;
- }
- return true;
- }
- return false;
- }
-
- /**
- * Update Shop page grid
- *
- * @return int
- */
- public function shop_no_of_products() {
- $taxonomy_page_display = get_option( 'woocommerce_category_archive_display', false );
- if ( is_product_taxonomy() && 'subcategories' === $taxonomy_page_display ) {
- if ( $this->astra_woo_is_subcategory() ) {
- $products = astra_get_option( 'shop-no-of-products' );
- return $products;
- }
- $products = wp_count_posts( 'product' )->publish;
- } else {
- $products = astra_get_option( 'shop-no-of-products' );
- }
- return $products;
- }
-
- /**
- * Add products item class on shop page
- *
- * @param Array $classes product classes.
- *
- * @return array.
- */
- public function shop_page_products_item_class( $classes = '' ) {
-
- if ( is_shop() || is_product_taxonomy() ) {
- $shop_grid = astra_get_option( 'shop-grids' );
- $classes[] = 'columns-' . $shop_grid['desktop'];
- $classes[] = 'tablet-columns-' . $shop_grid['tablet'];
- $classes[] = 'mobile-columns-' . $shop_grid['mobile'];
-
- $classes[] = 'ast-woo-shop-archive';
- }
- // Cart menu is emabled.
- $rt_section = astra_get_option( 'header-main-rt-section' );
-
- if ( 'woocommerce' === $rt_section ) {
- $classes[] = 'ast-woocommerce-cart-menu';
- }
-
- return $classes;
- }
-
- /**
- * Get grid columns for either Archive|Single product.
- * Introducing this function to reduce lot of CSS we write for 'grid-template-columns' for every count (till 6).
- *
- * @param string $type - WooCommerce page type Archive/Single.
- * @param string $device - Device specific grid option.
- * @param int $default - Default grid count (fallback basically).
- *
- * @return int grid count.
- * @since 3.4.3
- */
- public function get_grid_column_count( $type = 'archive', $device = 'desktop', $default = 2 ) {
-
- if ( 'archive' === $type ) {
- $products_grid = astra_get_option( 'shop-grids' );
- } else {
- $products_grid = astra_get_option( 'single-product-related-upsell-grid' );
- }
-
- return isset( $products_grid[ $device ] ) ? absint( $products_grid[ $device ] ) : $default;
- }
-
- /**
- * Add class on single product page
- *
- * @param Array $classes product classes.
- *
- * @return array.
- */
- public function single_product_class( $classes ) {
-
- if ( is_product() && 0 == get_post_meta( get_the_ID(), '_wc_review_count', true ) ) {
- $classes[] = 'ast-woo-product-no-review';
- }
-
- if ( is_shop() || is_product_taxonomy() ) {
- $hover_style = astra_get_option( 'shop-hover-style' );
-
- if ( '' !== $hover_style ) {
- $classes[] = 'astra-woo-hover-' . $hover_style;
- }
- }
-
- return $classes;
- }
-
- /**
- * Update woocommerce related product numbers
- *
- * @param array $args Related products array.
- * @return array
- */
- public function related_products_args( $args ) {
-
- $col = astra_get_option( 'shop-grids' );
- $args['posts_per_page'] = $col['desktop'];
- return $args;
- }
-
- /**
- * Setup theme
- *
- * @since 1.0.3
- */
- public function setup_theme() {
-
- // WooCommerce.
- add_theme_support( 'wc-product-gallery-zoom' );
- add_theme_support( 'wc-product-gallery-lightbox' );
- add_theme_support( 'wc-product-gallery-slider' );
- }
-
- /**
- * Store widgets init.
- */
- public function store_widgets_init() {
- register_sidebar(
- apply_filters(
- 'astra_woocommerce_shop_sidebar_init',
- array(
- 'name' => esc_html__( 'WooCommerce Sidebar', 'astra' ),
- 'id' => 'astra-woo-shop-sidebar',
- 'description' => __( 'This sidebar will be used on Product archive, Cart, Checkout and My Account pages.', 'astra' ),
- 'before_widget' => '<div id="%1$s" class="widget %2$s">',
- 'after_widget' => '</div>',
- 'before_title' => '<h2 class="widget-title">',
- 'after_title' => '</h2>',
- )
- )
- );
- register_sidebar(
- apply_filters(
- 'astra_woocommerce_single_sidebar_init',
- array(
- 'name' => esc_html__( 'Product Sidebar', 'astra' ),
- 'id' => 'astra-woo-single-sidebar',
- 'description' => __( 'This sidebar will be used on Single Product page.', 'astra' ),
- 'before_widget' => '<div id="%1$s" class="widget %2$s">',
- 'after_widget' => '</div>',
- 'before_title' => '<h2 class="widget-title">',
- 'after_title' => '</h2>',
- )
- )
- );
- }
-
- /**
- * Assign shop sidebar for store page.
- *
- * @param String $sidebar Sidebar.
- *
- * @return String $sidebar Sidebar.
- */
- public function replace_store_sidebar( $sidebar ) {
-
- if ( is_shop() || is_product_taxonomy() || is_checkout() || is_cart() || is_account_page() ) {
- $sidebar = 'astra-woo-shop-sidebar';
- } elseif ( is_product() ) {
- $sidebar = 'astra-woo-single-sidebar';
- }
-
- return $sidebar;
- }
-
- /**
- * WooCommerce Container
- *
- * @param String $sidebar_layout Layout type.
- *
- * @return String $sidebar_layout Layout type.
- */
- public function store_sidebar_layout( $sidebar_layout ) {
-
- if ( is_shop() || is_product_taxonomy() || is_checkout() || is_cart() || is_account_page() ) {
-
- $woo_sidebar = astra_get_option( 'woocommerce-sidebar-layout' );
-
- if ( 'default' !== $woo_sidebar ) {
-
- $sidebar_layout = $woo_sidebar;
- }
-
- if ( is_shop() ) {
- $shop_page_id = get_option( 'woocommerce_shop_page_id' );
- $shop_sidebar = get_post_meta( $shop_page_id, 'site-sidebar-layout', true );
- } elseif ( is_product_taxonomy() ) {
- $shop_sidebar = 'default';
- } else {
- $shop_sidebar = astra_get_option_meta( 'site-sidebar-layout', '', true );
- }
-
- if ( 'default' !== $shop_sidebar && ! empty( $shop_sidebar ) ) {
- $sidebar_layout = $shop_sidebar;
- }
- }
-
- return $sidebar_layout;
- }
- /**
- * WooCommerce Container
- *
- * @param String $layout Layout type.
- *
- * @return String $layout Layout type.
- */
- public function store_content_layout( $layout ) {
-
- if ( is_woocommerce() || is_checkout() || is_cart() || is_account_page() ) {
-
- $woo_layout = astra_get_option( 'woocommerce-content-layout' );
-
- if ( 'default' !== $woo_layout ) {
-
- $layout = $woo_layout;
- }
-
- if ( is_shop() ) {
- $shop_page_id = get_option( 'woocommerce_shop_page_id' );
- $shop_layout = get_post_meta( $shop_page_id, 'site-content-layout', true );
- } elseif ( is_product_taxonomy() ) {
- $shop_layout = 'default';
- } else {
- $shop_layout = astra_get_option_meta( 'site-content-layout', '', true );
- }
-
- if ( 'default' !== $shop_layout && ! empty( $shop_layout ) ) {
- $layout = $shop_layout;
- }
- }
-
- return apply_filters( 'astra_get_store_content_layout', $layout );
- }
-
- /**
- * Shop Page Meta
- *
- * @return void
- */
- public function shop_meta_option() {
-
- // Page Title.
- if ( is_shop() ) {
-
- $shop_page_id = get_option( 'woocommerce_shop_page_id' );
- $shop_title = get_post_meta( $shop_page_id, 'site-post-title', true );
- $main_header_display = get_post_meta( $shop_page_id, 'ast-main-header-display', true );
- $footer_layout = get_post_meta( $shop_page_id, 'footer-sml-layout', true );
-
- if ( 'disabled' === $shop_title ) {
- add_filter( 'woocommerce_show_page_title', '__return_false' );
- }
-
- if ( 'disabled' === $main_header_display ) {
- remove_action( 'astra_masthead', 'astra_masthead_primary_template' );
- }
-
- if ( 'disabled' === $footer_layout ) {
- remove_action( 'astra_footer_content', 'astra_footer_small_footer_template', 5 );
- }
- }
- }
-
-
- /**
- * Shop customization.
- *
- * @return void
- */
- public function shop_customization() {
-
- if ( ! apply_filters( 'astra_woo_shop_product_structure_override', false ) ) {
-
- add_action( 'woocommerce_before_shop_loop_item', 'astra_woo_shop_thumbnail_wrap_start', 6 );
- /**
- * Add sale flash before shop loop.
- */
- add_action( 'woocommerce_before_shop_loop_item', 'woocommerce_show_product_loop_sale_flash', 9 );
-
- add_action( 'woocommerce_after_shop_loop_item', 'astra_woo_shop_thumbnail_wrap_end', 8 );
- /**
- * Add Out of Stock to the Shop page
- */
- add_action( 'woocommerce_shop_loop_item_title', 'astra_woo_shop_out_of_stock', 8 );
-
- remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
-
- /**
- * Shop Page Product Content Sorting
- */
- add_action( 'woocommerce_after_shop_loop_item', 'astra_woo_woocommerce_shop_product_content' );
- }
- }
-
- /**
- * Checkout customization.
- *
- * @return void
- */
- public function woocommerce_checkout() {
-
- if ( is_admin() ) {
- return;
- }
-
- if ( ! apply_filters( 'astra_woo_shop_product_structure_override', false ) ) {
-
- /**
- * Checkout Page
- */
- add_action( 'woocommerce_checkout_billing', array( WC()->checkout(), 'checkout_form_shipping' ) );
- }
-
- // Checkout Page.
- remove_action( 'woocommerce_checkout_shipping', array( WC()->checkout(), 'checkout_form_shipping' ) );
- }
-
- /**
- * Single product customization.
- *
- * @return void
- */
- public function single_product_customization() {
-
- if ( ! is_product() ) {
- return;
- }
-
- add_filter( 'woocommerce_product_description_heading', '__return_false' );
- add_filter( 'woocommerce_product_additional_information_heading', '__return_false' );
-
- // Breadcrumb.
- remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0 );
- if ( ! astra_get_option( 'single-product-breadcrumb-disable' ) ) {
- add_action( 'woocommerce_single_product_summary', 'woocommerce_breadcrumb', 2 );
- }
- }
-
- /**
- * Remove Woo-Commerce Default actions
- */
- public function woocommerce_init() {
- remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10 );
- remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10 );
- remove_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10 );
- remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_rating', 5 );
- remove_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title', 10 );
- remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
- remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 10 );
- }
-
- /**
- * Add start of wrapper
- */
- public function before_main_content_start() {
- $site_sidebar = astra_page_layout();
- if ( 'left-sidebar' == $site_sidebar ) {
- get_sidebar();
- }
- ?>
- <div id="primary" class="content-area primary">
-
- <?php astra_primary_content_top(); ?>
-
- <main id="main" class="site-main">
- <div class="ast-woocommerce-container">
- <?php
- }
-
- /**
- * Add end of wrapper
- */
- public function before_main_content_end() {
- ?>
- </div> <!-- .ast-woocommerce-container -->
- </main> <!-- #main -->
-
- <?php astra_primary_content_bottom(); ?>
-
- </div> <!-- #primary -->
- <?php
- $site_sidebar = astra_page_layout();
- if ( 'right-sidebar' == $site_sidebar ) {
- get_sidebar();
- }
- }
-
- /**
- * Enqueue styles
- *
- * @since 1.0.31
- */
- public function add_styles() {
-
- /**
- * - Variable Declaration
- */
- $is_site_rtl = is_rtl();
- $theme_color = astra_get_option( 'theme-color' );
- $link_color = astra_get_option( 'link-color', $theme_color );
- $text_color = astra_get_option( 'text-color' );
- $link_h_color = astra_get_option( 'link-h-color' );
-
- $btn_color = astra_get_option( 'button-color' );
- if ( empty( $btn_color ) ) {
- $btn_color = astra_get_foreground_color( $theme_color );
- }
-
- $btn_h_color = astra_get_option( 'button-h-color' );
- if ( empty( $btn_h_color ) ) {
- $btn_h_color = astra_get_foreground_color( $link_h_color );
- }
- $btn_bg_color = astra_get_option( 'button-bg-color', '', $theme_color );
- $btn_bg_h_color = astra_get_option( 'button-bg-h-color', '', $link_h_color );
-
- $btn_border_radius = astra_get_option( 'button-radius' );
- $theme_btn_padding = astra_get_option( 'theme-button-padding' );
-
- $cart_h_color = astra_get_foreground_color( $link_h_color );
-
- $site_content_width = astra_get_option( 'site-content-width', 1200 );
- $woo_shop_archive_width = astra_get_option( 'shop-archive-width' );
- $woo_shop_archive_max_width = astra_get_option( 'shop-archive-max-width' );
-
- // global button border settings.
- $global_custom_button_border_size = astra_get_option( 'theme-button-border-group-border-size' );
- $btn_border_color = astra_get_option( 'theme-button-border-group-border-color' );
- $btn_border_h_color = astra_get_option( 'theme-button-border-group-border-h-color' );
-
- $css_output = array(
- '.woocommerce span.onsale, .wc-block-grid__product .wc-block-grid__product-onsale' => array(
- 'background-color' => $theme_color,
- 'color' => astra_get_foreground_color( $theme_color ),
- ),
- '.woocommerce a.button, .woocommerce button.button, .woocommerce .woocommerce-message a.button, .woocommerce #respond input#submit.alt, .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt, .woocommerce input.button,.woocommerce input.button:disabled, .woocommerce input.button:disabled[disabled], .woocommerce input.button:disabled:hover, .woocommerce input.button:disabled[disabled]:hover, .woocommerce #respond input#submit, .woocommerce button.button.alt.disabled, .wc-block-grid__products .wc-block-grid__product .wp-block-button__link, .wc-block-grid__product-onsale' => array(
- 'color' => $btn_color,
- 'border-color' => $btn_bg_color,
- 'background-color' => $btn_bg_color,
- ),
- '.woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce .woocommerce-message a.button:hover,.woocommerce #respond input#submit:hover,.woocommerce #respond input#submit.alt:hover, .woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover, .woocommerce input.button.alt:hover, .woocommerce input.button:hover, .woocommerce button.button.alt.disabled:hover, .wc-block-grid__products .wc-block-grid__product .wp-block-button__link:hover' => array(
- 'color' => $btn_h_color,
- 'border-color' => $btn_bg_h_color,
- 'background-color' => $btn_bg_h_color,
- ),
- '.woocommerce-message, .woocommerce-info' => array(
- 'border-top-color' => $link_color,
- ),
- '.woocommerce-message::before,.woocommerce-info::before' => array(
- 'color' => $link_color,
- ),
- '.woocommerce ul.products li.product .price, .woocommerce div.product p.price, .woocommerce div.product span.price, .widget_layered_nav_filters ul li.chosen a, .woocommerce-page ul.products li.product .ast-woo-product-category, .wc-layered-nav-rating a' => array(
- 'color' => $text_color,
- ),
- // Form Fields, Pagination border Color.
- '.woocommerce nav.woocommerce-pagination ul,.woocommerce nav.woocommerce-pagination ul li' => array(
- 'border-color' => $link_color,
- ),
- '.woocommerce nav.woocommerce-pagination ul li a:focus, .woocommerce nav.woocommerce-pagination ul li a:hover, .woocommerce nav.woocommerce-pagination ul li span.current' => array(
- 'background' => $link_color,
- 'color' => $btn_color,
- ),
- '.woocommerce-MyAccount-navigation-link.is-active a' => array(
- 'color' => $link_h_color,
- ),
- '.woocommerce .widget_price_filter .ui-slider .ui-slider-range, .woocommerce .widget_price_filter .ui-slider .ui-slider-handle' => array(
- 'background-color' => $link_color,
- ),
- // Button Typography.
- '.woocommerce a.button, .woocommerce button.button, .woocommerce .woocommerce-message a.button, .woocommerce #respond input#submit.alt, .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt, .woocommerce input.button,.woocommerce-cart table.cart td.actions .button, .woocommerce form.checkout_coupon .button, .woocommerce #respond input#submit, .wc-block-grid__products .wc-block-grid__product .wp-block-button__link' => array(
- 'border-radius' => astra_get_css_value( $btn_border_radius, 'px' ),
- 'padding-top' => astra_responsive_spacing( $theme_btn_padding, 'top', 'desktop' ),
- 'padding-right' => astra_responsive_spacing( $theme_btn_padding, 'right', 'desktop' ),
- 'padding-bottom' => astra_responsive_spacing( $theme_btn_padding, 'bottom', 'desktop' ),
- 'padding-left' => astra_responsive_spacing( $theme_btn_padding, 'left', 'desktop' ),
- ),
- '.woocommerce .star-rating, .woocommerce .comment-form-rating .stars a, .woocommerce .star-rating::before' => array(
- 'color' => $link_color,
- ),
- '.woocommerce div.product .woocommerce-tabs ul.tabs li.active:before' => array(
- 'background' => $link_color,
- ),
- '.woocommerce a.remove:hover' => array(
- 'color' => esc_attr( $link_color ),
- 'border-color' => esc_attr( $link_color ),
- 'background-color' => esc_attr( '#ffffff' ),
- ),
- );
-
- if ( false === Astra_Builder_Helper::$is_header_footer_builder_active ) {
-
- $compat_css_desktop = array(
- /**
- * Cart in menu
- */
- '.ast-site-header-cart a' => array(
- 'color' => esc_attr( $text_color ),
- ),
-
- '.ast-site-header-cart a:focus, .ast-site-header-cart a:hover, .ast-site-header-cart .current-menu-item a' => array(
- 'color' => esc_attr( $link_color ),
- ),
-
- '.ast-cart-menu-wrap .count, .ast-cart-menu-wrap .count:after' => array(
- 'border-color' => esc_attr( $link_color ),
- 'color' => esc_attr( $link_color ),
- ),
-
- '.ast-cart-menu-wrap:hover .count' => array(
- 'color' => esc_attr( $cart_h_color ),
- 'background-color' => esc_attr( $link_color ),
- ),
-
- '.ast-site-header-cart .widget_shopping_cart .total .woocommerce-Price-amount' => array(
- 'color' => esc_attr( $link_color ),
- ),
-
- '.woocommerce a.remove:hover, .ast-woocommerce-cart-menu .main-header-menu .woocommerce-custom-menu-item .menu-item:hover > .menu-link.remove:hover' => array(
- 'color' => esc_attr( $link_color ),
- 'border-color' => esc_attr( $link_color ),
- 'background-color' => esc_attr( '#ffffff' ),
- ),
-
- /**
- * Checkout button color for widget
- */
- '.ast-site-header-cart .widget_shopping_cart .buttons .button.checkout, .woocommerce .widget_shopping_cart .woocommerce-mini-cart__buttons .checkout.wc-forward' => array(
- 'color' => $btn_h_color,
- 'border-color' => $btn_bg_h_color,
- 'background-color' => $btn_bg_h_color,
- ),
- '.site-header .ast-site-header-cart-data .button.wc-forward, .site-header .ast-site-header-cart-data .button.wc-forward:hover' => array(
- 'color' => $btn_color,
- ),
- '.below-header-user-select .ast-site-header-cart .widget, .ast-above-header-section .ast-site-header-cart .widget a, .below-header-user-select .ast-site-header-cart .widget_shopping_cart a' => array(
- 'color' => $text_color,
- ),
- '.below-header-user-select .ast-site-header-cart .widget_shopping_cart a:hover, .ast-above-header-section .ast-site-header-cart .widget_shopping_cart a:hover, .below-header-user-select .ast-site-header-cart .widget_shopping_cart a.remove:hover, .ast-above-header-section .ast-site-header-cart .widget_shopping_cart a.remove:hover' => array(
- 'color' => esc_attr( $link_color ),
- ),
- );
-
- $css_output = array_merge( $css_output, $compat_css_desktop );
- }
-
- if ( Astra_Builder_Helper::apply_flex_based_css() ) {
- $css_output['.woocommerce[class*="rel-up-columns-"] .site-main div.product .related.products ul.products li.product, .woocommerce-page .site-main ul.products li.product'] = array(
- 'width' => '100%',
- );
- }
-
- if ( false === Astra_Icons::is_svg_icons() ) {
- $css_output['.woocommerce ul.product-categories > li ul li:before'] = array(
- 'content' => '"\e900"',
- 'padding' => '0 5px 0 5px',
- 'display' => 'inline-block',
- 'font-family' => 'Astra',
- 'transform' => 'rotate(-90deg)',
- 'font-size' => '11px',
- 'font-size' => '0.7rem',
- );
- } else {
- $css_output['.woocommerce ul.product-categories > li ul li'] = array(
- 'position' => 'relative',
- );
- if ( $is_site_rtl ) {
- $css_output['.woocommerce ul.product-categories > li ul li:before'] = array(
- 'content' => '""',
- 'border-width' => '1px 0 0 1px',
- 'border-style' => 'solid',
- 'display' => 'inline-block',
- 'width' => '6px',
- 'height' => '6px',
- 'position' => 'absolute',
- 'top' => '50%',
- 'margin-top' => '-2px',
- '-webkit-transform' => 'rotate(45deg)',
- 'transform' => 'rotate(45deg)',
- );
- $css_output['.woocommerce ul.product-categories > li ul li a'] = array(
- 'margin-right' => '15px',
- );
- } else {
- $css_output['.woocommerce ul.product-categories > li ul li:before'] = array(
- 'content' => '""',
- 'border-width' => '1px 1px 0 0',
- 'border-style' => 'solid',
- 'display' => 'inline-block',
- 'width' => '6px',
- 'height' => '6px',
- 'position' => 'absolute',
- 'top' => '50%',
- 'margin-top' => '-2px',
- '-webkit-transform' => 'rotate(45deg)',
- 'transform' => 'rotate(45deg)',
- );
- $css_output['.woocommerce ul.product-categories > li ul li a'] = array(
- 'margin-left' => '15px',
- );
- }
- }
-
- /* Parse WooCommerce General CSS from array() */
- $css_output = astra_parse_css( $css_output );
-
- if ( ! Astra_Builder_Helper::apply_flex_based_css() ) {
- $tablet_css_shop_page_grid = array(
- '.woocommerce.tablet-columns-6 ul.products li.product, .woocommerce-page.tablet-columns-6 ul.products li.product' => array(
- 'width' => '12.7%',
- 'width' => 'calc(16.66% - 16.66px)',
- ),
- '.woocommerce.tablet-columns-5 ul.products li.product, .woocommerce-page.tablet-columns-5 ul.products li.product' => array(
- 'width' => '16.2%',
- 'width' => 'calc(20% - 16px)',
- ),
- '.woocommerce.tablet-columns-4 ul.products li.product, .woocommerce-page.tablet-columns-4 ul.products li.product' => array(
- 'width' => '21.5%',
- 'width' => 'calc(25% - 15px)',
- ),
- '.woocommerce.tablet-columns-3 ul.products li.product, .woocommerce-page.tablet-columns-3 ul.products li.product' => array(
- 'width' => '30.2%',
- 'width' => 'calc(33.33% - 14px)',
- ),
- '.woocommerce.tablet-columns-2 ul.products li.product, .woocommerce-page.tablet-columns-2 ul.products li.product' => array(
- 'width' => '47.6%',
- 'width' => 'calc(50% - 10px)',
- ),
- '.woocommerce.tablet-columns-1 ul.products li.product, .woocommerce-page.tablet-columns-1 ul.products li.product' => array(
- 'width' => '100%',
- ),
- '.woocommerce div.product .related.products ul.products li.product' => array(
- 'width' => '30.2%',
- 'width' => 'calc(33.33% - 14px)',
- ),
- );
-
- } else {
- $archive_tablet_grid = $this->get_grid_column_count( 'archive', 'tablet' );
-
- $tablet_css_shop_page_grid = array(
- '.woocommerce.tablet-columns-' . $archive_tablet_grid . ' ul.products li.product, .woocommerce-page.tablet-columns-' . $archive_tablet_grid . ' ul.products' => array(
- 'grid-template-columns' => 'repeat(' . $archive_tablet_grid . ', minmax(0, 1fr))',
- ),
- );
- }
- $css_output .= astra_parse_css( $tablet_css_shop_page_grid, astra_get_mobile_breakpoint( '', 1 ), astra_get_tablet_breakpoint() );
-
- if ( ! Astra_Builder_Helper::apply_flex_based_css() ) {
- if ( $is_site_rtl ) {
- $tablet_shop_page_grid_lang_direction_css = array(
- '.woocommerce[class*="columns-"].columns-3 > ul.products li.product, .woocommerce[class*="columns-"].columns-4 > ul.products li.product, .woocommerce[class*="columns-"].columns-5 > ul.products li.product, .woocommerce[class*="columns-"].columns-6 > ul.products li.product' => array(
- 'width' => '30.2%',
- 'width' => 'calc(33.33% - 14px)',
- 'margin-left' => '20px',
- ),
- '.woocommerce[class*="columns-"].columns-3 > ul.products li.product:nth-child(3n), .woocommerce[class*="columns-"].columns-4 > ul.products li.product:nth-child(3n), .woocommerce[class*="columns-"].columns-5 > ul.products li.product:nth-child(3n), .woocommerce[class*="columns-"].columns-6 > ul.products li.product:nth-child(3n)' => array(
- 'margin-left' => 0,
- 'clear' => 'left',
- ),
- '.woocommerce[class*="columns-"].columns-3 > ul.products li.product:nth-child(3n+1), .woocommerce[class*="columns-"].columns-4 > ul.products li.product:nth-child(3n+1), .woocommerce[class*="columns-"].columns-5 > ul.products li.product:nth-child(3n+1), .woocommerce[class*="columns-"].columns-6 > ul.products li.product:nth-child(3n+1)' => array(
- 'clear' => 'right',
- ),
- '.woocommerce[class*="columns-"] ul.products li.product:nth-child(n), .woocommerce-page[class*="columns-"] ul.products li.product:nth-child(n)' => array(
- 'margin-left' => '20px',
- 'clear' => 'none',
- ),
- '.woocommerce.tablet-columns-2 ul.products li.product:nth-child(2n), .woocommerce-page.tablet-columns-2 ul.products li.product:nth-child(2n), .woocommerce.tablet-columns-3 ul.products li.product:nth-child(3n), .woocommerce-page.tablet-columns-3 ul.products li.product:nth-child(3n), .woocommerce.tablet-columns-4 ul.products li.product:nth-child(4n), .woocommerce-page.tablet-columns-4 ul.products li.product:nth-child(4n), .woocommerce.tablet-columns-5 ul.products li.product:nth-child(5n), .woocommerce-page.tablet-columns-5 ul.products li.product:nth-child(5n), .woocommerce.tablet-columns-6 ul.products li.product:nth-child(6n), .woocommerce-page.tablet-columns-6 ul.products li.product:nth-child(6n)' => array(
- 'margin-left' => '0',
- 'clear' => 'left',
- ),
- '.woocommerce.tablet-columns-2 ul.products li.product:nth-child(2n+1), .woocommerce-page.tablet-columns-2 ul.products li.product:nth-child(2n+1), .woocommerce.tablet-columns-3 ul.products li.product:nth-child(3n+1), .woocommerce-page.tablet-columns-3 ul.products li.product:nth-child(3n+1), .woocommerce.tablet-columns-4 ul.products li.product:nth-child(4n+1), .woocommerce-page.tablet-columns-4 ul.products li.product:nth-child(4n+1), .woocommerce.tablet-columns-5 ul.products li.product:nth-child(5n+1), .woocommerce-page.tablet-columns-5 ul.products li.product:nth-child(5n+1), .woocommerce.tablet-columns-6 ul.products li.product:nth-child(6n+1), .woocommerce-page.tablet-columns-6 ul.products li.product:nth-child(6n+1)' => array(
- 'clear' => 'right',
- ),
- '.woocommerce div.product .related.products ul.products li.product:nth-child(3n), .woocommerce-page.tablet-columns-1 .site-main ul.products li.product' => array(
- 'margin-left' => 0,
- 'clear' => 'left',
- ),
- '.woocommerce div.product .related.products ul.products li.product:nth-child(3n+1)' => array(
- 'clear' => 'right',
- ),
- );
- } else {
- $tablet_shop_page_grid_lang_direction_css = array(
- '.woocommerce[class*="columns-"].columns-3 > ul.products li.product, .woocommerce[class*="columns-"].columns-4 > ul.products li.product, .woocommerce[class*="columns-"].columns-5 > ul.products li.product, .woocommerce[class*="columns-"].columns-6 > ul.products li.product' => array(
- 'width' => '30.2%',
- 'width' => 'calc(33.33% - 14px)',
- 'margin-right' => '20px',
- ),
- '.woocommerce[class*="columns-"].columns-3 > ul.products li.product:nth-child(3n), .woocommerce[class*="columns-"].columns-4 > ul.products li.product:nth-child(3n), .woocommerce[class*="columns-"].columns-5 > ul.products li.product:nth-child(3n), .woocommerce[class*="columns-"].columns-6 > ul.products li.product:nth-child(3n)' => array(
- 'margin-right' => 0,
- 'clear' => 'right',
- ),
- '.woocommerce[class*="columns-"].columns-3 > ul.products li.product:nth-child(3n+1), .woocommerce[class*="columns-"].columns-4 > ul.products li.product:nth-child(3n+1), .woocommerce[class*="columns-"].columns-5 > ul.products li.product:nth-child(3n+1), .woocommerce[class*="columns-"].columns-6 > ul.products li.product:nth-child(3n+1)' => array(
- 'clear' => 'left',
- ),
- '.woocommerce[class*="columns-"] ul.products li.product:nth-child(n), .woocommerce-page[class*="columns-"] ul.products li.product:nth-child(n)' => array(
- 'margin-right' => '20px',
- 'clear' => 'none',
- ),
- '.woocommerce.tablet-columns-2 ul.products li.product:nth-child(2n), .woocommerce-page.tablet-columns-2 ul.products li.product:nth-child(2n), .woocommerce.tablet-columns-3 ul.products li.product:nth-child(3n), .woocommerce-page.tablet-columns-3 ul.products li.product:nth-child(3n), .woocommerce.tablet-columns-4 ul.products li.product:nth-child(4n), .woocommerce-page.tablet-columns-4 ul.products li.product:nth-child(4n), .woocommerce.tablet-columns-5 ul.products li.product:nth-child(5n), .woocommerce-page.tablet-columns-5 ul.products li.product:nth-child(5n), .woocommerce.tablet-columns-6 ul.products li.product:nth-child(6n), .woocommerce-page.tablet-columns-6 ul.products li.product:nth-child(6n)' => array(
- 'margin-right' => '0',
- 'clear' => 'right',
- ),
- '.woocommerce.tablet-columns-2 ul.products li.product:nth-child(2n+1), .woocommerce-page.tablet-columns-2 ul.products li.product:nth-child(2n+1), .woocommerce.tablet-columns-3 ul.products li.product:nth-child(3n+1), .woocommerce-page.tablet-columns-3 ul.products li.product:nth-child(3n+1), .woocommerce.tablet-columns-4 ul.products li.product:nth-child(4n+1), .woocommerce-page.tablet-columns-4 ul.products li.product:nth-child(4n+1), .woocommerce.tablet-columns-5 ul.products li.product:nth-child(5n+1), .woocommerce-page.tablet-columns-5 ul.products li.product:nth-child(5n+1), .woocommerce.tablet-columns-6 ul.products li.product:nth-child(6n+1), .woocommerce-page.tablet-columns-6 ul.products li.product:nth-child(6n+1)' => array(
- 'clear' => 'left',
- ),
- '.woocommerce div.product .related.products ul.products li.product:nth-child(3n), .woocommerce-page.tablet-columns-1 .site-main ul.products li.product' => array(
- 'margin-right' => 0,
- 'clear' => 'right',
- ),
- '.woocommerce div.product .related.products ul.products li.product:nth-child(3n+1)' => array(
- 'clear' => 'left',
- ),
- );
- }
- $css_output .= astra_parse_css( $tablet_shop_page_grid_lang_direction_css, astra_get_mobile_breakpoint( '', 1 ), astra_get_tablet_breakpoint() );
- }
-
- /**
- * Global button CSS - Tablet = min-wdth: (tablet + 1)px
- */
- if ( $is_site_rtl ) {
- $min_tablet_css = array(
- '.woocommerce #reviews #comments' => array(
- 'width' => '55%',
- 'float' => 'right',
- ),
- '.woocommerce #reviews #review_form_wrapper' => array(
- 'width' => '45%',
- 'float' => 'left',
- 'padding-right' => '2em',
- ),
- '.woocommerce form.checkout_coupon' => array(
- 'width' => '50%',
- ),
- );
- if ( ! Astra_Builder_Helper::apply_flex_based_css() ) {
- $min_tablet_css['.woocommerce #reviews #comments']['float'] = 'right';
- $min_tablet_css['.woocommerce #reviews #review_form_wrapper']['float'] = 'left';
- }
- } else {
- $min_tablet_css = array(
- '.woocommerce #reviews #comments' => array(
- 'width' => '55%',
- ),
- '.woocommerce #reviews #review_form_wrapper' => array(
- 'width' => '45%',
- 'padding-left' => '2em',
- ),
- '.woocommerce form.checkout_coupon' => array(
- 'width' => '50%',
- ),
- );
-
- if ( ! Astra_Builder_Helper::apply_flex_based_css() ) {
- $min_tablet_css['.woocommerce #reviews #comments']['float'] = 'left';
- $min_tablet_css['.woocommerce #reviews #review_form_wrapper']['float'] = 'right';
- }
- }
-
- $css_output .= astra_parse_css( $min_tablet_css, astra_get_tablet_breakpoint( '', 1 ) );
-
- /**
- * Global button CSS - Tablet = max-width: (tab-breakpoint)px.
- */
- $css_global_button_tablet = array(
- '.ast-header-break-point.ast-woocommerce-cart-menu .header-main-layout-1.ast-mobile-header-stack.ast-no-menu-items .ast-site-header-cart, .ast-header-break-point.ast-woocommerce-cart-menu .header-main-layout-3.ast-mobile-header-stack.ast-no-menu-items .ast-site-header-cart' => array(
- 'padding-right' => 0,
- 'padding-left' => 0,
- ),
- '.ast-header-break-point.ast-woocommerce-cart-menu .header-main-layout-1.ast-mobile-header-stack .main-header-bar' => array(
- 'text-align' => 'center',
- ),
- '.ast-header-break-point.ast-woocommerce-cart-menu .header-main-layout-1.ast-mobile-header-stack .ast-site-header-cart, .ast-header-break-point.ast-woocommerce-cart-menu .header-main-layout-1.ast-mobile-header-stack .ast-mobile-menu-buttons' => array(
- 'display' => 'inline-block',
- ),
- '.ast-header-break-point.ast-woocommerce-cart-menu .header-main-layout-2.ast-mobile-header-inline .site-branding' => array(
- 'flex' => 'auto',
- ),
- '.ast-header-break-point.ast-woocommerce-cart-menu .header-main-layout-3.ast-mobile-header-stack .site-branding' => array(
- 'flex' => '0 0 100%',
- ),
- '.ast-header-break-point.ast-woocommerce-cart-menu .header-main-layout-3.ast-mobile-header-stack .main-header-container' => array(
- 'display' => 'flex',
- 'justify-content' => 'center',
- ),
- '.woocommerce-cart .woocommerce-shipping-calculator .button' => array(
- 'width' => '100%',
- ),
- '.woocommerce a.button, .woocommerce button.button, .woocommerce .woocommerce-message a.button, .woocommerce #respond input#submit.alt, .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt, .woocommerce input.button,.woocommerce-cart table.cart td.actions .button, .woocommerce form.checkout_coupon .button, .woocommerce #respond input#submit, .wc-block-grid__products .wc-block-grid__product .wp-block-button__link' => array(
- 'padding-top' => astra_responsive_spacing( $theme_btn_padding, 'top', 'tablet' ),
- 'padding-right' => astra_responsive_spacing( $theme_btn_padding, 'right', 'tablet' ),
- 'padding-bottom' => astra_responsive_spacing( $theme_btn_padding, 'bottom', 'tablet' ),
- 'padding-left' => astra_responsive_spacing( $theme_btn_padding, 'left', 'tablet' ),
- ),
- '.woocommerce div.product div.images, .woocommerce div.product div.summary, .woocommerce #content div.product div.images, .woocommerce #content div.product div.summary, .woocommerce-page div.product div.images, .woocommerce-page div.product div.summary, .woocommerce-page #content div.product div.images, .woocommerce-page #content div.product div.summary' => array(
- 'float' => 'none',
- 'width' => '100%',
- ),
- '.woocommerce-cart table.cart td.actions .ast-return-to-shop' => array(
- 'display' => 'block',
- 'text-align' => 'center',
- 'margin-top' => '1em',
- ),
- );
-
- if ( Astra_Builder_Helper::apply_flex_based_css() ) {
- $css_global_button_tablet['.woocommerce ul.products, .woocommerce-page ul.products'] = array(
- 'grid-template-columns' => 'repeat(3, minmax(0, 1fr))',
- );
-
- if ( is_shop() || is_product_taxonomy() ) {
-
- $archive_tablet_grid = $this->get_grid_column_count( 'archive', 'tablet' );
-
- $css_global_button_tablet[ '.woocommerce.tablet-columns-' . $archive_tablet_grid . ' ul.products' ] = array(
- 'grid-template-columns' => 'repeat(' . $archive_tablet_grid . ', minmax(0, 1fr))',
- );
- $css_global_button_tablet['.woocommerce[class*="tablet-columns-"] .site-main div.product .related.products ul.products li.product'] = array(
- 'width' => '100%',
- );
- }
-
- if ( is_product() ) {
-
- $single_tablet_grid = $this->get_grid_column_count( 'single', 'tablet' );
-
- $css_global_button_tablet[ '.woocommerce.tablet-rel-up-columns-' . $single_tablet_grid . ' ul.products' ] = array(
- 'grid-template-columns' => 'repeat(' . $single_tablet_grid . ', minmax(0, 1fr))',
- );
- $css_global_button_tablet['.woocommerce[class*="tablet-rel-up-columns-"] .site-main div.product .related.products ul.products li.product'] = array(
- 'width' => '100%',
- );
- }
- }
-
- $css_output .= astra_parse_css( $css_global_button_tablet, '', astra_get_tablet_breakpoint() );
-
- /**
- * Global button CSS - Mobile = max-width: (mobile-breakpoint)px.
- */
- $css_global_button_mobile = array(
- '.ast-separate-container .ast-woocommerce-container' => array(
- 'padding' => '.54em 1em 1.33333em',
- ),
- '.woocommerce a.button, .woocommerce button.button, .woocommerce .woocommerce-message a.button, .woocommerce #respond input#submit.alt, .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt, .woocommerce input.button,.woocommerce-cart table.cart td.actions .button, .woocommerce form.checkout_coupon .button, .woocommerce #respond input#submit, .wc-block-grid__products .wc-block-grid__product .wp-block-button__link' => array(
- 'padding-top' => astra_responsive_spacing( $theme_btn_padding, 'top', 'mobile' ),
- 'padding-right' => astra_responsive_spacing( $theme_btn_padding, 'right', 'mobile' ),
- 'padding-bottom' => astra_responsive_spacing( $theme_btn_padding, 'bottom', 'mobile' ),
- 'padding-left' => astra_responsive_spacing( $theme_btn_padding, 'left', 'mobile' ),
- ),
- '.woocommerce-message, .woocommerce-error, .woocommerce-info' => array(
- 'display' => 'flex',
- 'flex-wrap' => 'wrap',
- ),
- '.woocommerce-message a.button, .woocommerce-error a.button, .woocommerce-info a.button' => array(
- 'order' => '1',
- 'margin-top' => '.5em',
- ),
-
- '.woocommerce .woocommerce-ordering, .woocommerce-page .woocommerce-ordering' => array(
- 'float' => 'none',
- 'margin-bottom' => '2em',
- 'width' => '100%',
- ),
- '.woocommerce ul.products a.button, .woocommerce-page ul.products a.button' => array(
- 'padding' => '0.5em 0.75em',
- ),
- '.woocommerce table.cart td.actions .button, .woocommerce #content table.cart td.actions .button, .woocommerce-page table.cart td.actions .button, .woocommerce-page #content table.cart td.actions .button' => array(
- 'padding-left' => '1em',
- 'padding-right' => '1em',
- ),
- '.woocommerce #content table.cart .button, .woocommerce-page #content table.cart .button' => array(
- 'width' => '100%',
- ),
- '.woocommerce #content table.cart .product-thumbnail, .woocommerce-page #content table.cart .product-thumbnail' => array(
- 'display' => 'block',
- 'text-align' => 'center !important',
- ),
- '.woocommerce #content table.cart .product-thumbnail::before, .woocommerce-page #content table.cart .product-thumbnail::before' => array(
- 'display' => 'none',
- ),
- '.woocommerce #content table.cart td.actions .coupon, .woocommerce-page #content table.cart td.actions .coupon' => array(
- 'float' => 'none',
- ),
- '.woocommerce #content table.cart td.actions .coupon .button, .woocommerce-page #content table.cart td.actions .coupon .button' => array(
- 'flex' => '1',
- ),
- '.woocommerce #content div.product .woocommerce-tabs ul.tabs li a, .woocommerce-page #content div.product .woocommerce-tabs ul.tabs li a' => array(
- 'display' => 'block',
- ),
- );
-
- if ( ! Astra_Builder_Helper::apply_flex_based_css() ) {
- $css_global_button_mobile['.woocommerce div.product .related.products ul.products li.product, .woocommerce.mobile-columns-2 ul.products li.product, .woocommerce-page.mobile-columns-2 ul.products li.product'] = array(
- 'width' => '46.1%',
- 'width' => 'calc(50% - 10px)',
- );
- $css_global_button_mobile['.woocommerce.mobile-columns-6 ul.products li.product, .woocommerce-page.mobile-columns-6 ul.products li.product'] = array(
- 'width' => '10.2%',
- 'width' => 'calc(16.66% - 16.66px)',
- );
- $css_global_button_mobile['.woocommerce.mobile-columns-5 ul.products li.product, .woocommerce-page.mobile-columns-5 ul.products li.product'] = array(
- 'width' => '13%',
- 'width' => 'calc(20% - 16px)',
- );
- $css_global_button_mobile['.woocommerce.mobile-columns-4 ul.products li.product, .woocommerce-page.mobile-columns-4 ul.products li.product'] = array(
- 'width' => '19%',
- 'width' => 'calc(25% - 15px)',
- );
- $css_global_button_mobile['.woocommerce.mobile-columns-3 ul.products li.product, .woocommerce-page.mobile-columns-3 ul.products li.product'] = array(
- 'width' => '28.2%',
- 'width' => 'calc(33.33% - 14px)',
- );
- $css_global_button_mobile['.woocommerce.mobile-columns-1 ul.products li.product, .woocommerce-page.mobile-columns-1 ul.products li.product'] = array(
- 'width' => '100%',
- );
- } else {
-
- $archive_mobile_grid = $this->get_grid_column_count( 'archive', 'mobile' );
- $single_mobile_grid = $this->get_grid_column_count( 'single', 'mobile' );
-
- $css_global_button_mobile[ '.woocommerce ul.products, .woocommerce-page ul.products, .woocommerce.mobile-columns-' . $archive_mobile_grid . ' ul.products, .woocommerce-page.mobile-columns-' . $archive_mobile_grid . ' ul.products' ] = array(
- 'grid-template-columns' => 'repeat(' . $archive_mobile_grid . ', minmax(0, 1fr))',
- );
- $css_global_button_mobile[ '.woocommerce.mobile-rel-up-columns-' . $single_mobile_grid . ' ul.products' ] = array(
- 'grid-template-columns' => 'repeat(' . $single_mobile_grid . ', minmax(0, 1fr))',
- );
- }
-
- $css_output .= astra_parse_css( $css_global_button_mobile, '', astra_get_mobile_breakpoint() );
-
- if ( $is_site_rtl ) {
- $global_button_mobile_lang_direction_css = array(
- '.woocommerce[class*="columns-"].columns-3 > ul.products li.product, .woocommerce[class*="columns-"].columns-4 > ul.products li.product, .woocommerce[class*="columns-"].columns-5 > ul.products li.product, .woocommerce[class*="columns-"].columns-6 > ul.products li.product' => array(
- 'width' => '46.1%',
- 'width' => 'calc(50% - 10px)',
- 'margin-left' => '20px',
- ),
- '.woocommerce ul.products a.button.loading::after, .woocommerce-page ul.products a.button.loading::after' => array(
- 'display' => 'inline-block',
- 'margin-right' => '5px',
- 'position' => 'initial',
- ),
- '.woocommerce.mobile-columns-1 .site-main ul.products li.product:nth-child(n), .woocommerce-page.mobile-columns-1 .site-main ul.products li.product:nth-child(n)' => array(
- 'margin-left' => 0,
- ),
- '.woocommerce #content div.product .woocommerce-tabs ul.tabs li, .woocommerce-page #content div.product .woocommerce-tabs ul.tabs li' => array(
- 'display' => 'block',
- 'margin-left' => 0,
- ),
- );
-
- if ( ! Astra_Builder_Helper::apply_flex_based_css() ) {
- $global_button_mobile_lang_direction_css['.woocommerce[class*="columns-"] ul.products li.product:nth-child(n), .woocommerce-page[class*="columns-"] ul.products li.product:nth-child(n)'] = array(
- 'margin-left' => '20px',
- 'clear' => 'none',
- );
- $global_button_mobile_lang_direction_css['.woocommerce-page[class*=columns-].columns-3>ul.products li.product:nth-child(2n), .woocommerce-page[class*=columns-].columns-4>ul.products li.product:nth-child(2n), .woocommerce-page[class*=columns-].columns-5>ul.products li.product:nth-child(2n), .woocommerce-page[class*=columns-].columns-6>ul.products li.product:nth-child(2n), .woocommerce[class*=columns-].columns-3>ul.products li.product:nth-child(2n), .woocommerce[class*=columns-].columns-4>ul.products li.product:nth-child(2n), .woocommerce[class*=columns-].columns-5>ul.products li.product:nth-child(2n), .woocommerce[class*=columns-].columns-6>ul.products li.product:nth-child(2n)'] = array(
- 'margin-left' => 0,
- 'clear' => 'left',
- );
- $global_button_mobile_lang_direction_css['.woocommerce[class*="columns-"].columns-3 > ul.products li.product:nth-child(2n+1), .woocommerce[class*="columns-"].columns-4 > ul.products li.product:nth-child(2n+1), .woocommerce[class*="columns-"].columns-5 > ul.products li.product:nth-child(2n+1), .woocommerce[class*="columns-"].columns-6 > ul.products li.product:nth-child(2n+1)'] = array(
- 'clear' => 'right',
- );
- $global_button_mobile_lang_direction_css['.woocommerce-page[class*=columns-] ul.products li.product:nth-child(n), .woocommerce[class*=columns-] ul.products li.product:nth-child(n)'] = array(
- 'margin-left' => '20px',
- 'clear' => 'none',
- );
- $global_button_mobile_lang_direction_css['.woocommerce.mobile-columns-6 ul.products li.product:nth-child(6n), .woocommerce-page.mobile-columns-6 ul.products li.product:nth-child(6n), .woocommerce.mobile-columns-5 ul.products li.product:nth-child(5n), .woocommerce-page.mobile-columns-5 ul.products li.product:nth-child(5n), .woocommerce.mobile-columns-4 ul.products li.product:nth-child(4n), .woocommerce-page.mobile-columns-4 ul.products li.product:nth-child(4n), .woocommerce.mobile-columns-3 ul.products li.product:nth-child(3n), .woocommerce-page.mobile-columns-3 ul.products li.product:nth-child(3n), .woocommerce.mobile-columns-2 ul.products li.product:nth-child(2n), .woocommerce-page.mobile-columns-2 ul.products li.product:nth-child(2n), .woocommerce div.product .related.products ul.products li.product:nth-child(2n)'] = array(
- 'margin-left' => 0,
- 'clear' => 'left',
- );
- $global_button_mobile_lang_direction_css['.woocommerce.mobile-columns-6 ul.products li.product:nth-child(6n+1), .woocommerce-page.mobile-columns-6 ul.products li.product:nth-child(6n+1), .woocommerce.mobile-columns-5 ul.products li.product:nth-child(5n+1), .woocommerce-page.mobile-columns-5 ul.products li.product:nth-child(5n+1), .woocommerce.mobile-columns-4 ul.products li.product:nth-child(4n+1), .woocommerce-page.mobile-columns-4 ul.products li.product:nth-child(4n+1), .woocommerce.mobile-columns-3 ul.products li.product:nth-child(3n+1), .woocommerce-page.mobile-columns-3 ul.products li.product:nth-child(3n+1), .woocommerce.mobile-columns-2 ul.products li.product:nth-child(2n+1), .woocommerce-page.mobile-columns-2 ul.products li.product:nth-child(2n+1), .woocommerce div.product .related.products ul.products li.product:nth-child(2n+1)'] = array(
- 'clear' => 'right',
- );
- }
- } else {
- $global_button_mobile_lang_direction_css = array(
- '.woocommerce[class*="columns-"].columns-3 > ul.products li.product, .woocommerce[class*="columns-"].columns-4 > ul.products li.product, .woocommerce[class*="columns-"].columns-5 > ul.products li.product, .woocommerce[class*="columns-"].columns-6 > ul.products li.product' => array(
- 'width' => '46.1%',
- 'width' => 'calc(50% - 10px)',
- 'margin-right' => '20px',
- ),
- '.woocommerce ul.products a.button.loading::after, .woocommerce-page ul.products a.button.loading::after' => array(
- 'display' => 'inline-block',
- 'margin-left' => '5px',
- 'position' => 'initial',
- ),
- '.woocommerce.mobile-columns-1 .site-main ul.products li.product:nth-child(n), .woocommerce-page.mobile-columns-1 .site-main ul.products li.product:nth-child(n)' => array(
- 'margin-right' => 0,
- ),
- '.woocommerce #content div.product .woocommerce-tabs ul.tabs li, .woocommerce-page #content div.product .woocommerce-tabs ul.tabs li' => array(
- 'display' => 'block',
- 'margin-right' => 0,
- ),
- );
-
- if ( ! Astra_Builder_Helper::apply_flex_based_css() ) {
- $global_button_mobile_lang_direction_css['.woocommerce[class*="columns-"] ul.products li.product:nth-child(n), .woocommerce-page[class*="columns-"] ul.products li.product:nth-child(n)'] = array(
- 'margin-right' => '20px',
- 'clear' => 'none',
- );
- $global_button_mobile_lang_direction_css['.woocommerce-page[class*=columns-].columns-3>ul.products li.product:nth-child(2n), .woocommerce-page[class*=columns-].columns-4>ul.products li.product:nth-child(2n), .woocommerce-page[class*=columns-].columns-5>ul.products li.product:nth-child(2n), .woocommerce-page[class*=columns-].columns-6>ul.products li.product:nth-child(2n), .woocommerce[class*=columns-].columns-3>ul.products li.product:nth-child(2n), .woocommerce[class*=columns-].columns-4>ul.products li.product:nth-child(2n), .woocommerce[class*=columns-].columns-5>ul.products li.product:nth-child(2n), .woocommerce[class*=columns-].columns-6>ul.products li.product:nth-child(2n)'] = array(
- 'margin-right' => 0,
- 'clear' => 'right',
- );
- $global_button_mobile_lang_direction_css['.woocommerce[class*="columns-"].columns-3 > ul.products li.product:nth-child(2n+1), .woocommerce[class*="columns-"].columns-4 > ul.products li.product:nth-child(2n+1), .woocommerce[class*="columns-"].columns-5 > ul.products li.product:nth-child(2n+1), .woocommerce[class*="columns-"].columns-6 > ul.products li.product:nth-child(2n+1)'] = array(
- 'clear' => 'left',
- );
- $global_button_mobile_lang_direction_css['.woocommerce-page[class*=columns-] ul.products li.product:nth-child(n), .woocommerce[class*=columns-] ul.products li.product:nth-child(n)'] = array(
- 'margin-right' => '20px',
- 'clear' => 'none',
- );
- $global_button_mobile_lang_direction_css['.woocommerce.mobile-columns-6 ul.products li.product:nth-child(6n), .woocommerce-page.mobile-columns-6 ul.products li.product:nth-child(6n), .woocommerce.mobile-columns-5 ul.products li.product:nth-child(5n), .woocommerce-page.mobile-columns-5 ul.products li.product:nth-child(5n), .woocommerce.mobile-columns-4 ul.products li.product:nth-child(4n), .woocommerce-page.mobile-columns-4 ul.products li.product:nth-child(4n), .woocommerce.mobile-columns-3 ul.products li.product:nth-child(3n), .woocommerce-page.mobile-columns-3 ul.products li.product:nth-child(3n), .woocommerce.mobile-columns-2 ul.products li.product:nth-child(2n), .woocommerce-page.mobile-columns-2 ul.products li.product:nth-child(2n), .woocommerce div.product .related.products ul.products li.product:nth-child(2n)'] = array(
- 'margin-right' => 0,
- 'clear' => 'right',
- );
- $global_button_mobile_lang_direction_css['.woocommerce.mobile-columns-6 ul.products li.product:nth-child(6n+1), .woocommerce-page.mobile-columns-6 ul.products li.product:nth-child(6n+1), .woocommerce.mobile-columns-5 ul.products li.product:nth-child(5n+1), .woocommerce-page.mobile-columns-5 ul.products li.product:nth-child(5n+1), .woocommerce.mobile-columns-4 ul.products li.product:nth-child(4n+1), .woocommerce-page.mobile-columns-4 ul.products li.product:nth-child(4n+1), .woocommerce.mobile-columns-3 ul.products li.product:nth-child(3n+1), .woocommerce-page.mobile-columns-3 ul.products li.product:nth-child(3n+1), .woocommerce.mobile-columns-2 ul.products li.product:nth-child(2n+1), .woocommerce-page.mobile-columns-2 ul.products li.product:nth-child(2n+1), .woocommerce div.product .related.products ul.products li.product:nth-child(2n+1)'] = array(
- 'clear' => 'left',
- );
- }
- }
-
- $css_output .= astra_parse_css( $global_button_mobile_lang_direction_css, '', astra_get_mobile_breakpoint() );
-
- if ( 'page-builder' !== astra_get_content_layout() ) {
- /* Woocommerce Shop Archive width */
- if ( 'custom' === $woo_shop_archive_width ) :
- // Woocommerce shop archive custom width.
- $site_width = array(
- '.ast-woo-shop-archive .site-content > .ast-container' => array(
- 'max-width' => astra_get_css_value( $woo_shop_archive_max_width, 'px' ),
- ),
- );
- $css_output .= astra_parse_css( $site_width, astra_get_tablet_breakpoint( '', 1 ) );
-
- else :
- // Woocommerce shop archive default width.
- $site_width = array(
- '.ast-woo-shop-archive .site-content > .ast-container' => array(
- 'max-width' => astra_get_css_value( $site_content_width + 40, 'px' ),
- ),
- );
-
- /* Parse CSS from array()*/
- $css_output .= astra_parse_css( $site_width, astra_get_tablet_breakpoint( '', 1 ) );
- endif;
- }
-
- $woo_product_css = array(
- '.woocommerce #content .ast-woocommerce-container div.product div.images, .woocommerce .ast-woocommerce-container div.product div.images, .woocommerce-page #content .ast-woocommerce-container div.product div.images, .woocommerce-page .ast-woocommerce-container div.product div.images' => array(
- 'width' => '50%',
- ),
- '.woocommerce #content .ast-woocommerce-container div.product div.summary, .woocommerce .ast-woocommerce-container div.product div.summary, .woocommerce-page #content .ast-woocommerce-container div.product div.summary, .woocommerce-page .ast-woocommerce-container div.product div.summary' => array(
- 'width' => '46%',
- ),
- '.woocommerce.woocommerce-checkout form #customer_details.col2-set .col-1, .woocommerce.woocommerce-checkout form #customer_details.col2-set .col-2, .woocommerce-page.woocommerce-checkout form #customer_details.col2-set .col-1, .woocommerce-page.woocommerce-checkout form #customer_details.col2-set .col-2' => array(
- 'float' => 'none',
- 'width' => 'auto',
- ),
- );
-
- /* Parse CSS from array()*/
- $css_output .= astra_parse_css( $woo_product_css, astra_get_tablet_breakpoint( '', 1 ) );
-
- /*
- * global button settings not working for woocommerce button on shop and single page.
- * check if the current user is existing user or new user.
- * if new user load the CSS bty default if existing provide a filter
- */
- if ( self::astra_global_btn_woo_comp() ) {
-
- $woo_global_button_css = array(
- '.woocommerce a.button , .woocommerce button.button.alt ,.woocommerce-page table.cart td.actions .button, .woocommerce-page #content table.cart td.actions .button , .woocommerce a.button.alt ,.woocommerce .woocommerce-message a.button , .ast-site-header-cart .widget_shopping_cart .buttons .button.checkout, .woocommerce button.button.alt.disabled , .wc-block-grid__products .wc-block-grid__product .wp-block-button__link ' => array(
- 'border' => 'solid',
- 'border-top-width' => ( isset( $global_custom_button_border_size['top'] ) && '' !== $global_custom_button_border_size['top'] ) ? astra_get_css_value( $global_custom_button_border_size['top'], 'px' ) : '0',
- 'border-right-width' => ( isset( $global_custom_button_border_size['right'] ) && '' !== $global_custom_button_border_size['right'] ) ? astra_get_css_value( $global_custom_button_border_size['right'], 'px' ) : '0',
- 'border-left-width' => ( isset( $global_custom_button_border_size['left'] ) && '' !== $global_custom_button_border_size['left'] ) ? astra_get_css_value( $global_custom_button_border_size['left'], 'px' ) : '0',
- 'border-bottom-width' => ( isset( $global_custom_button_border_size['bottom'] ) && '' !== $global_custom_button_border_size['bottom'] ) ? astra_get_css_value( $global_custom_button_border_size['bottom'], 'px' ) : '0',
- 'border-color' => $btn_border_color ? $btn_border_color : $btn_bg_color,
- ),
- '.woocommerce a.button:hover , .woocommerce button.button.alt:hover , .woocommerce-page table.cart td.actions .button:hover, .woocommerce-page #content table.cart td.actions .button:hover, .woocommerce a.button.alt:hover ,.woocommerce .woocommerce-message a.button:hover , .ast-site-header-cart .widget_shopping_cart .buttons .button.checkout:hover , .woocommerce button.button.alt.disabled:hover , .wc-block-grid__products .wc-block-grid__product .wp-block-button__link:hover' => array(
- 'border-color' => $btn_border_h_color ? $btn_border_h_color : $btn_bg_h_color,
- ),
- );
-
- $css_output .= astra_parse_css( $woo_global_button_css );
- }
-
- if ( ! is_shop() && ! is_product() ) {
-
- $css_output .= astra_parse_css(
- array(
- '.widget_product_search button' => array(
- 'flex' => '0 0 auto',
- 'padding' => '10px 20px;',
- ),
- )
- );
- }
-
- if ( $is_site_rtl ) {
- $woo_product_lang_direction_css = array(
- '.woocommerce.woocommerce-checkout form #customer_details.col2-set, .woocommerce-page.woocommerce-checkout form #customer_details.col2-set' => array(
- 'width' => '55%',
- 'float' => 'right',
- 'margin-left' => '4.347826087%',
- ),
- '.woocommerce.woocommerce-checkout form #order_review, .woocommerce.woocommerce-checkout form #order_review_heading, .woocommerce-page.woocommerce-checkout form #order_review, .woocommerce-page.woocommerce-checkout form #order_review_heading' => array(
- 'width' => '40%',
- 'float' => 'left',
- 'margin-left' => '0',
- 'clear' => 'left',
- ),
- );
- } else {
- $woo_product_lang_direction_css = array(
- '.woocommerce.woocommerce-checkout form #customer_details.col2-set, .woocommerce-page.woocommerce-checkout form #customer_details.col2-set' => array(
- 'width' => '55%',
- 'float' => 'left',
- 'margin-right' => '4.347826087%',
- ),
- '.woocommerce.woocommerce-checkout form #order_review, .woocommerce.woocommerce-checkout form #order_review_heading, .woocommerce-page.woocommerce-checkout form #order_review, .woocommerce-page.woocommerce-checkout form #order_review_heading' => array(
- 'width' => '40%',
- 'float' => 'right',
- 'margin-right' => '0',
- 'clear' => 'right',
- ),
- );
- }
-
- /* Parse CSS from array()*/
- $css_output .= astra_parse_css( $woo_product_lang_direction_css, astra_get_tablet_breakpoint( '', 1 ) );
-
- wp_add_inline_style( 'woocommerce-general', apply_filters( 'astra_theme_woocommerce_dynamic_css', $css_output ) );
-
- /**
- * YITH WooCommerce Wishlist Style
- */
- $yith_wcwl_main_style = array(
- '.yes-js.js_active .ast-plain-container.ast-single-post #primary' => array(
- 'margin' => esc_attr( '4em 0' ),
- ),
- '.js_active .ast-plain-container.ast-single-post .entry-header' => array(
- 'margin-top' => esc_attr( '0' ),
- ),
- '.woocommerce table.wishlist_table' => array(
- 'font-size' => esc_attr( '100%' ),
- ),
- '.woocommerce table.wishlist_table tbody td.product-name' => array(
- 'font-weight' => esc_attr( '700' ),
- ),
- '.woocommerce table.wishlist_table thead th' => array(
- 'border-top' => esc_attr( '0' ),
- ),
- '.woocommerce table.wishlist_table tr td.product-remove' => array(
- 'padding' => esc_attr( '.7em 1em' ),
- ),
- '.woocommerce table.wishlist_table tbody td' => array(
- 'border-right' => esc_attr( '0' ),
- ),
- '.woocommerce .wishlist_table td.product-add-to-cart a' => array(
- 'display' => esc_attr( 'inherit !important' ),
- ),
- '.wishlist_table tr td, .wishlist_table tr th.wishlist-delete, .wishlist_table tr th.product-checkbox' => array(
- 'text-align' => esc_attr( 'left' ),
- ),
- '.woocommerce #content table.wishlist_table.cart a.remove' => array(
- 'display' => esc_attr( 'inline-block' ),
- 'vertical-align' => esc_attr( 'middle' ),
- 'font-size' => esc_attr( '18px' ),
- 'font-weight' => esc_attr( 'normal' ),
- 'width' => esc_attr( '24px' ),
- 'height' => esc_attr( '24px' ),
- 'line-height' => esc_attr( '21px' ),
- 'color' => esc_attr( '#ccc !important' ),
- 'text-align' => esc_attr( 'center' ),
- 'border' => esc_attr( '1px solid #ccc' ),
- ),
- '.woocommerce #content table.wishlist_table.cart a.remove:hover' => array(
- 'color' => esc_attr( $link_color . '!important' ),
- 'border-color' => esc_attr( $link_color ),
- 'background-color' => esc_attr( '#ffffff' ),
- ),
- );
- /* Parse CSS from array() */
- $yith_wcwl_main_style = astra_parse_css( $yith_wcwl_main_style );
-
- $yith_wcwl_main_style_small = array(
- '.yes-js.js_active .ast-plain-container.ast-single-post #primary' => array(
- 'padding' => esc_attr( '1.5em 0' ),
- 'margin' => esc_attr( '0' ),
- ),
- );
- /* Parse CSS from array()*/
- $yith_wcwl_main_style .= astra_parse_css( $yith_wcwl_main_style_small, '', astra_get_tablet_breakpoint() );
-
- wp_add_inline_style( 'yith-wcwl-main', $yith_wcwl_main_style );
- }
-
- /**
- * Register Customizer sections and panel for woocommerce
- *
- * @since 1.0.0
- * @param WP_Customize_Manager $wp_customize Theme Customizer object.
- */
- public function customize_register( $wp_customize ) {
-
- // @codingStandardsIgnoreStart WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
- /**
- * Register Sections & Panels
- */
- require ASTRA_THEME_DIR . 'inc/compatibility/woocommerce/customizer/class-astra-customizer-register-woo-section.php';
-
- /**
- * Sections
- */
- require ASTRA_THEME_DIR . 'inc/compatibility/woocommerce/customizer/sections/class-astra-woo-shop-container-configs.php';
- require ASTRA_THEME_DIR . 'inc/compatibility/woocommerce/customizer/sections/class-astra-woo-shop-sidebar-configs.php';
- require ASTRA_THEME_DIR . 'inc/compatibility/woocommerce/customizer/sections/layout/class-astra-woo-shop-layout-configs.php';
- require ASTRA_THEME_DIR . 'inc/compatibility/woocommerce/customizer/sections/layout/class-astra-woo-shop-single-layout-configs.php';
- require ASTRA_THEME_DIR . 'inc/compatibility/woocommerce/customizer/sections/layout/class-astra-woo-shop-cart-layout-configs.php';
- // @codingStandardsIgnoreEnd WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
-
- }
-
- /**
- * Add Cart icon markup
- *
- * @param String $output Markup.
- * @param String $section Section name.
- * @param String $section_type Section selected option.
- * @return Markup String.
- *
- * @since 1.0.0
- */
- public function astra_header_cart( $output, $section, $section_type ) {
-
- if ( 'woocommerce' === $section_type && apply_filters( 'astra_woo_header_cart_icon', true ) ) {
-
- $output = $this->woo_mini_cart_markup();
- }
-
- return $output;
- }
-
- /**
- * Woocommerce mini cart markup markup
- *
- * @since 1.2.2
- * @return html
- */
- public function woo_mini_cart_markup() {
-
- if ( is_cart() ) {
- $class = 'current-menu-item';
- } else {
- $class = '';
- }
-
- $cart_menu_classes = apply_filters( 'astra_cart_in_menu_class', array( 'ast-menu-cart-with-border' ) );
-
- ob_start();
- if ( is_customize_preview() && true === Astra_Builder_Helper::$is_header_footer_builder_active ) {
- Astra_Builder_UI_Controller::render_customizer_edit_button();
- }
- ?>
- <div id="ast-site-header-cart" class="ast-site-header-cart <?php echo esc_attr( implode( ' ', $cart_menu_classes ) ); ?>">
- <div class="ast-site-header-cart-li <?php echo esc_attr( $class ); ?>">
- <?php $this->astra_get_cart_link(); ?>
- </div>
- <div class="ast-site-header-cart-data">
- <?php the_widget( 'WC_Widget_Cart', 'title=' ); ?>
- </div>
- </div>
- <?php
- return ob_get_clean();
- }
-
- /**
- * Add Cart icon markup
- *
- * @param Array $options header options array.
- *
- * @return Array header options array.
- * @since 1.0.0
- */
- public function header_section_elements( $options ) {
-
- $options['woocommerce'] = 'WooCommerce';
-
- return $options;
- }
-
- /**
- * Cart Link
- * Displayed a link to the cart including the number of items present and the cart total
- *
- * @return void
- * @since 1.0.0
- */
- public function astra_get_cart_link() {
-
- $view_shopping_cart = apply_filters( 'astra_woo_view_shopping_cart_title', __( 'View your shopping cart', 'astra' ) );
-
- $woo_cart_link = wc_get_cart_url();
-
- if ( is_customize_preview() ) {
- $woo_cart_link = '#';
- }
- ?>
- <a class="cart-container" href="<?php echo esc_url( $woo_cart_link ); ?>" title="<?php echo esc_attr( $view_shopping_cart ); ?>">
-
- <?php
- do_action( 'astra_woo_header_cart_icons_before' );
-
- if ( apply_filters( 'astra_woo_default_header_cart_icon', true ) ) {
- ?>
- <div class="ast-cart-menu-wrap">
- <span class="count">
- <?php
- if ( apply_filters( 'astra_woo_header_cart_total', true ) && null != WC()->cart ) {
- echo WC()->cart->get_cart_contents_count(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
- }
- ?>
- </span>
- </div>
- <?php
- }
-
- do_action( 'astra_woo_header_cart_icons_after' );
-
- ?>
- </a>
- <?php
- }
-
- /**
- * Cart Fragments
- * Ensure cart contents update when products are added to the cart via AJAX
- *
- * @param array $fragments Fragments to refresh via AJAX.
- * @return array Fragments to refresh via AJAX
- */
- public function cart_link_fragment( $fragments ) {
-
- ob_start();
- $this->astra_get_cart_link();
- $fragments['a.cart-container'] = ob_get_clean();
-
- return $fragments;
- }
-
- /**
- * For existing users, do not load the wide/full width image CSS by default.
- *
- * @since 2.5.0
- * @return boolean false if it is an existing user , true if not.
- */
- public static function astra_global_btn_woo_comp() {
- $astra_settings = get_option( ASTRA_THEME_SETTINGS );
- $astra_settings['global-btn-woo-css'] = isset( $astra_settings['global-btn-woo-css'] ) ? false : true;
- return apply_filters( 'astra_global_btn_woo_comp', $astra_settings['global-btn-woo-css'] );
- }
- }
-
-endif;
-
-if ( apply_filters( 'astra_enable_woocommerce_integration', true ) ) {
- Astra_Woocommerce::get_instance();
-}
+<?php +/** + * WooCommerce Compatibility File. + * + * @link https://woocommerce.com/ + * + * @package Astra + */ + +// If plugin - 'WooCommerce' not exist then return. +if ( ! class_exists( 'WooCommerce' ) ) { + return; +} + +/** + * Astra WooCommerce Compatibility + */ +if ( ! class_exists( 'Astra_Woocommerce' ) ) : + + /** + * Astra WooCommerce Compatibility + * + * @since 1.0.0 + */ + class Astra_Woocommerce { + + /** + * Member Variable + * + * @var object 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() { + + require_once ASTRA_THEME_DIR . 'inc/compatibility/woocommerce/woocommerce-common-functions.php';// phpcs:ignore: WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound + + add_filter( 'woocommerce_enqueue_styles', array( $this, 'woo_filter_style' ) ); + + add_filter( 'astra_theme_defaults', array( $this, 'theme_defaults' ) ); + + add_action( 'after_setup_theme', array( $this, 'setup_theme' ) ); + + // Register Store Sidebars. + add_action( 'widgets_init', array( $this, 'store_widgets_init' ), 15 ); + // Replace Store Sidebars. + add_filter( 'astra_get_sidebar', array( $this, 'replace_store_sidebar' ) ); + // Store Sidebar Layout. + add_filter( 'astra_page_layout', array( $this, 'store_sidebar_layout' ) ); + // Store Content Layout. + add_filter( 'astra_get_content_layout', array( $this, 'store_content_layout' ) ); + + add_action( 'woocommerce_before_main_content', array( $this, 'before_main_content_start' ) ); + add_action( 'woocommerce_after_main_content', array( $this, 'before_main_content_end' ) ); + add_filter( 'wp_enqueue_scripts', array( $this, 'add_styles' ) ); + add_action( 'wp', array( $this, 'shop_customization' ), 5 ); + add_action( 'wp_head', array( $this, 'single_product_customization' ), 5 ); + add_action( 'wp', array( $this, 'woocommerce_init' ), 1 ); + add_action( 'wp', array( $this, 'woocommerce_checkout' ) ); + add_action( 'wp', array( $this, 'shop_meta_option' ), 1 ); + add_action( 'wp', array( $this, 'cart_page_upselles' ) ); + + add_filter( 'loop_shop_columns', array( $this, 'shop_columns' ) ); + add_filter( 'loop_shop_per_page', array( $this, 'shop_no_of_products' ) ); + add_filter( 'body_class', array( $this, 'shop_page_products_item_class' ) ); + add_filter( 'post_class', array( $this, 'single_product_class' ) ); + add_filter( 'woocommerce_product_get_rating_html', array( $this, 'rating_markup' ), 10, 3 ); + add_filter( 'woocommerce_output_related_products_args', array( $this, 'related_products_args' ) ); + + // Add Cart icon in Menu. + add_filter( 'astra_get_dynamic_header_content', array( $this, 'astra_header_cart' ), 10, 3 ); + + // Add Cart option in dropdown. + add_filter( 'astra_header_section_elements', array( $this, 'header_section_elements' ) ); + + // Cart fragment. + if ( defined( 'WC_VERSION' ) && version_compare( WC_VERSION, '2.3', '>=' ) ) { + add_filter( 'woocommerce_add_to_cart_fragments', array( $this, 'cart_link_fragment' ) ); + } else { + add_filter( 'add_to_cart_fragments', array( $this, 'cart_link_fragment' ) ); + } + + add_action( 'woocommerce_before_shop_loop_item_title', array( $this, 'product_flip_image' ), 10 ); + add_filter( 'woocommerce_subcategory_count_html', array( $this, 'subcategory_count_markup' ), 10, 2 ); + + add_action( 'customize_register', array( $this, 'customize_register' ), 2 ); + + add_filter( 'woocommerce_get_stock_html', 'astra_woo_product_in_stock', 10, 2 ); + + add_filter( 'astra_schema_body', array( $this, 'remove_body_schema' ) ); + + // Header Cart Icon. + add_action( 'astra_woo_header_cart_icons_before', array( $this, 'header_cart_icon_markup' ) ); + + add_action( 'astra_cart_in_menu_class', array( $this, 'header_cart_icon_class' ), 99 ); + + } + + /** + * Header Cart Extra Icons markup + * + * @return void; + */ + public function header_cart_icon_markup() { + + if ( false === Astra_Builder_Helper::$is_header_footer_builder_active && ! defined( 'ASTRA_EXT_VER' ) ) { + return; + } + + $icon = astra_get_option( 'woo-header-cart-icon' ); + $cart_total_display = astra_get_option( 'woo-header-cart-total-display' ); + $cart_count_display = apply_filters( 'astra_header_cart_count', true ); + $cart_title_display = astra_get_option( 'woo-header-cart-title-display' ); + $cart_title = apply_filters( 'astra_header_cart_title', __( 'Cart', 'astra' ) ); + + $cart_title_markup = '<span class="ast-woo-header-cart-title">' . esc_html( $cart_title ) . '</span>'; + $cart_total_markup = ''; + if ( null !== WC()->cart ) { + $cart_total_markup = '<span class="ast-woo-header-cart-total">' . WC()->cart->get_cart_subtotal() . '</span>'; + } + + // Cart Title & Cart Cart total markup. + $cart_info_markup = sprintf( + '<span class="ast-woo-header-cart-info-wrap"> + %1$s + %2$s + %3$s + </span>', + ( $cart_title_display ) ? $cart_title_markup : '', + ( $cart_total_display && $cart_title_display ) ? '/' : '', + ( $cart_total_display ) ? $cart_total_markup : '' + ); + + $cart_contents_count = 0; + if ( null !== WC()->cart ) { + $cart_contents_count = WC()->cart->get_cart_contents_count(); + } + + // Cart Icon markup with total number of items. + $cart_icon = sprintf( + '<i class="astra-icon ast-icon-shopping-%1$s %2$s" + %3$s + >%4$s</i>', + ( $icon ) ? $icon : '', + ( $cart_count_display ) ? '' : 'no-cart-total', + ( $cart_count_display ) ? 'data-cart-total="' . $cart_contents_count . '"' : '', + ( $icon ) ? ( ( false !== Astra_Icons::is_svg_icons() ) ? Astra_Icons::get_icons( $icon ) : '' ) : '' + ); + + // Theme's default icon with cart title and cart total. + if ( 'default' == $icon || ! defined( 'ASTRA_EXT_VER' ) || ( defined( 'ASTRA_EXT_VER' ) && ! Astra_Ext_Extension::is_active( 'woocommerce' ) ) ) { + // Cart Total or Cart Title enable then only add markup. + if ( $cart_title_display || $cart_total_display ) { + echo $cart_info_markup; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + } else { + + // Remove Default cart icon added by theme. + add_filter( 'astra_woo_default_header_cart_icon', '__return_false' ); + + /* translators: 1: Cart Title Markup, 2: Cart Icon Markup */ + printf( + '<div class="ast-addon-cart-wrap"> + %1$s + %2$s + </div>', + ( $cart_title_display || $cart_total_display ) ? $cart_info_markup : '', // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + ( $cart_icon ) ? $cart_icon : '' // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + ); + } + } + + /** + * Header Cart Icon Class + * + * @param array $classes Default argument array. + * + * @return array; + */ + public function header_cart_icon_class( $classes ) { + + if ( false === Astra_Builder_Helper::$is_header_footer_builder_active && ! defined( 'ASTRA_EXT_VER' ) ) { + return $classes; + } + + $header_cart_icon_style = astra_get_option( 'woo-header-cart-icon-style' ); + + $classes[] = 'ast-menu-cart-' . $header_cart_icon_style; + $header_cart_icon_has_color = astra_get_option( 'woo-header-cart-icon-color' ); + if ( ! empty( $header_cart_icon_has_color ) && ( 'none' !== $header_cart_icon_style ) ) { + $classes[] = 'ast-menu-cart-has-color'; + } + + return $classes; + } + + /** + * Remove body schema when using WooCommerce template. + * WooCommerce adds it's own product schema hence schema data from Astra should be disabled here. + * + * @since 1.8.0 + * @param String $schema Schema markup. + * @return String + */ + public function remove_body_schema( $schema ) { + if ( is_woocommerce() ) { + $schema = ''; + } + + return $schema; + } + + /** + * Rating Markup + * + * @since 1.2.2 + * @param string $html Rating Markup. + * @param float $rating Rating being shown. + * @param int $count Total number of ratings. + * @return string + */ + public function rating_markup( $html, $rating, $count ) { + + if ( 0 == $rating ) { + $html = '<div class="star-rating">'; + $html .= wc_get_star_rating_html( $rating, $count ); + $html .= '</div>'; + } + return $html; + } + + /** + * Cart Page Upselles products. + * + * @return void + */ + public function cart_page_upselles() { + + $upselles_enabled = astra_get_option( 'enable-cart-upsells' ); + if ( ! $upselles_enabled ) { + remove_action( 'woocommerce_cart_collaterals', 'woocommerce_cross_sell_display' ); + } + } + + /** + * Subcategory Count Markup + * + * @param array $styles Css files. + * + * @return array + */ + public function woo_filter_style( $styles ) { + + /* Directory and Extension */ + $file_prefix = ( SCRIPT_DEBUG ) ? '' : '.min'; + $dir_name = ( SCRIPT_DEBUG ) ? 'unminified' : 'minified'; + + $css_uri = ASTRA_THEME_URI . 'assets/css/' . $dir_name . '/compatibility/woocommerce/'; + + // Register & Enqueue Styles. + // Generate CSS URL. + + if ( ! Astra_Builder_Helper::apply_flex_based_css() ) { + $styles = array( + 'woocommerce-layout' => array( + 'src' => $css_uri . 'woocommerce-layout' . $file_prefix . '.css', + 'deps' => '', + 'version' => ASTRA_THEME_VERSION, + 'media' => 'all', + 'has_rtl' => true, + ), + 'woocommerce-smallscreen' => array( + 'src' => $css_uri . 'woocommerce-smallscreen' . $file_prefix . '.css', + 'deps' => 'woocommerce-layout', + 'version' => ASTRA_THEME_VERSION, + 'media' => 'only screen and (max-width: ' . apply_filters( 'woocommerce_style_smallscreen_breakpoint', astra_get_tablet_breakpoint() . 'px' ) . ')', + 'has_rtl' => true, + ), + 'woocommerce-general' => array( + 'src' => $css_uri . 'woocommerce' . $file_prefix . '.css', + 'deps' => '', + 'version' => ASTRA_THEME_VERSION, + 'media' => 'all', + 'has_rtl' => true, + ), + ); + } else { + $styles = array( + 'woocommerce-layout' => array( + 'src' => $css_uri . 'woocommerce-layout-grid' . $file_prefix . '.css', + 'deps' => '', + 'version' => ASTRA_THEME_VERSION, + 'media' => 'all', + 'has_rtl' => true, + ), + 'woocommerce-smallscreen' => array( + 'src' => $css_uri . 'woocommerce-smallscreen-grid' . $file_prefix . '.css', + 'deps' => 'woocommerce-layout', + 'version' => ASTRA_THEME_VERSION, + 'media' => 'only screen and (max-width: ' . apply_filters( 'woocommerce_style_smallscreen_breakpoint', astra_get_tablet_breakpoint() . 'px' ) . ')', + 'has_rtl' => true, + ), + 'woocommerce-general' => array( + 'src' => $css_uri . 'woocommerce-grid' . $file_prefix . '.css', + 'deps' => '', + 'version' => ASTRA_THEME_VERSION, + 'media' => 'all', + 'has_rtl' => true, + ), + ); + } + + return $styles; + } + + /** + * Subcategory Count Markup + * + * @param mixed $content Count Markup. + * @param object $category Object of Category. + * @return mixed + */ + public function subcategory_count_markup( $content, $category ) { + + $content = sprintf( // WPCS: XSS OK. + /* translators: 1: number of products */ + _nx( '%1$s Product', '%1$s Products', $category->count, 'product categories', 'astra' ), + number_format_i18n( $category->count ) + ); + + return '<mark class="count">' . $content . '</mark>'; + } + + /** + * Product Flip Image + */ + public function product_flip_image() { + + global $product; + + $hover_style = astra_get_option( 'shop-hover-style' ); + + if ( 'swap' === $hover_style ) { + + $attachment_ids = $product->get_gallery_image_ids(); + + if ( $attachment_ids ) { + + $image_size = apply_filters( 'single_product_archive_thumbnail_size', 'shop_catalog' ); + + echo apply_filters( 'astra_woocommerce_product_flip_image', wp_get_attachment_image( reset( $attachment_ids ), $image_size, false, array( 'class' => 'show-on-hover' ) ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + } + } + + /** + * Theme Defaults. + * + * @param array $defaults Array of options value. + * @return array + */ + public function theme_defaults( $defaults ) { + + // Container. + $defaults['woocommerce-content-layout'] = 'plain-container'; + + // Sidebar. + $defaults['woocommerce-sidebar-layout'] = 'no-sidebar'; + $defaults['single-product-sidebar-layout'] = 'default'; + + /* Shop */ + $defaults['shop-grids'] = array( + 'desktop' => 4, + 'tablet' => 3, + 'mobile' => 2, + ); + $defaults['shop-no-of-products'] = '12'; + $defaults['shop-product-structure'] = array( + 'category', + 'title', + 'ratings', + 'price', + 'add_cart', + ); + $defaults['shop-hover-style'] = ''; + + /* Single */ + $defaults['single-product-breadcrumb-disable'] = false; + + /* Cart */ + $defaults['enable-cart-upsells'] = true; + + $defaults['shop-archive-width'] = 'default'; + $defaults['shop-archive-max-width'] = 1200; + + return $defaults; + } + + /** + * Update Shop page grid + * + * @param int $col Shop Column. + * @return int + */ + public function shop_columns( $col ) { + + $col = astra_get_option( 'shop-grids' ); + return $col['desktop']; + } + + /** + * Check if the current page is a Product Subcategory page or not. + * + * @param integer $category_id Current page Category ID. + * @return boolean + */ + public function astra_woo_is_subcategory( $category_id = null ) { + if ( is_tax( 'product_cat' ) ) { + if ( empty( $category_id ) ) { + $category_id = get_queried_object_id(); + } + $category = get_term( get_queried_object_id(), 'product_cat' ); + if ( empty( $category->parent ) ) { + return false; + } + return true; + } + return false; + } + + /** + * Update Shop page grid + * + * @return int + */ + public function shop_no_of_products() { + $taxonomy_page_display = get_option( 'woocommerce_category_archive_display', false ); + if ( is_product_taxonomy() && 'subcategories' === $taxonomy_page_display ) { + if ( $this->astra_woo_is_subcategory() ) { + $products = astra_get_option( 'shop-no-of-products' ); + return $products; + } + $products = wp_count_posts( 'product' )->publish; + } else { + $products = astra_get_option( 'shop-no-of-products' ); + } + return $products; + } + + /** + * Add products item class on shop page + * + * @param Array $classes product classes. + * + * @return array. + */ + public function shop_page_products_item_class( $classes = '' ) { + + if ( is_shop() || is_product_taxonomy() ) { + $shop_grid = astra_get_option( 'shop-grids' ); + $classes[] = 'columns-' . $shop_grid['desktop']; + $classes[] = 'tablet-columns-' . $shop_grid['tablet']; + $classes[] = 'mobile-columns-' . $shop_grid['mobile']; + + $classes[] = 'ast-woo-shop-archive'; + } + // Cart menu is emabled. + $rt_section = astra_get_option( 'header-main-rt-section' ); + + if ( 'woocommerce' === $rt_section ) { + $classes[] = 'ast-woocommerce-cart-menu'; + } + + return $classes; + } + + /** + * Get grid columns for either Archive|Single product. + * Introducing this function to reduce lot of CSS we write for 'grid-template-columns' for every count (till 6). + * + * @param string $type - WooCommerce page type Archive/Single. + * @param string $device - Device specific grid option. + * @param int $default - Default grid count (fallback basically). + * + * @return int grid count. + * @since 3.4.3 + */ + public function get_grid_column_count( $type = 'archive', $device = 'desktop', $default = 2 ) { + + if ( 'archive' === $type ) { + $products_grid = astra_get_option( 'shop-grids' ); + } else { + $products_grid = astra_get_option( 'single-product-related-upsell-grid' ); + } + + return isset( $products_grid[ $device ] ) ? absint( $products_grid[ $device ] ) : $default; + } + + /** + * Add class on single product page + * + * @param Array $classes product classes. + * + * @return array. + */ + public function single_product_class( $classes ) { + + if ( is_product() && 0 == get_post_meta( get_the_ID(), '_wc_review_count', true ) ) { + $classes[] = 'ast-woo-product-no-review'; + } + + if ( is_shop() || is_product_taxonomy() ) { + $hover_style = astra_get_option( 'shop-hover-style' ); + + if ( '' !== $hover_style ) { + $classes[] = 'astra-woo-hover-' . $hover_style; + } + } + + return $classes; + } + + /** + * Update woocommerce related product numbers + * + * @param array $args Related products array. + * @return array + */ + public function related_products_args( $args ) { + + $col = astra_get_option( 'shop-grids' ); + $args['posts_per_page'] = $col['desktop']; + return $args; + } + + /** + * Setup theme + * + * @since 1.0.3 + */ + public function setup_theme() { + + // WooCommerce. + add_theme_support( 'wc-product-gallery-zoom' ); + add_theme_support( 'wc-product-gallery-lightbox' ); + add_theme_support( 'wc-product-gallery-slider' ); + } + + /** + * Store widgets init. + */ + public function store_widgets_init() { + register_sidebar( + apply_filters( + 'astra_woocommerce_shop_sidebar_init', + array( + 'name' => esc_html__( 'WooCommerce Sidebar', 'astra' ), + 'id' => 'astra-woo-shop-sidebar', + 'description' => __( 'This sidebar will be used on Product archive, Cart, Checkout and My Account pages.', 'astra' ), + 'before_widget' => '<div id="%1$s" class="widget %2$s">', + 'after_widget' => '</div>', + 'before_title' => '<h2 class="widget-title">', + 'after_title' => '</h2>', + ) + ) + ); + register_sidebar( + apply_filters( + 'astra_woocommerce_single_sidebar_init', + array( + 'name' => esc_html__( 'Product Sidebar', 'astra' ), + 'id' => 'astra-woo-single-sidebar', + 'description' => __( 'This sidebar will be used on Single Product page.', 'astra' ), + 'before_widget' => '<div id="%1$s" class="widget %2$s">', + 'after_widget' => '</div>', + 'before_title' => '<h2 class="widget-title">', + 'after_title' => '</h2>', + ) + ) + ); + } + + /** + * Assign shop sidebar for store page. + * + * @param String $sidebar Sidebar. + * + * @return String $sidebar Sidebar. + */ + public function replace_store_sidebar( $sidebar ) { + + if ( is_shop() || is_product_taxonomy() || is_checkout() || is_cart() || is_account_page() ) { + $sidebar = 'astra-woo-shop-sidebar'; + } elseif ( is_product() ) { + $sidebar = 'astra-woo-single-sidebar'; + } + + return $sidebar; + } + + /** + * WooCommerce Container + * + * @param String $sidebar_layout Layout type. + * + * @return String $sidebar_layout Layout type. + */ + public function store_sidebar_layout( $sidebar_layout ) { + + if ( is_shop() || is_product_taxonomy() || is_checkout() || is_cart() || is_account_page() ) { + + $woo_sidebar = astra_get_option( 'woocommerce-sidebar-layout' ); + + if ( 'default' !== $woo_sidebar ) { + + $sidebar_layout = $woo_sidebar; + } + + if ( is_shop() ) { + $shop_page_id = get_option( 'woocommerce_shop_page_id' ); + $shop_sidebar = get_post_meta( $shop_page_id, 'site-sidebar-layout', true ); + } elseif ( is_product_taxonomy() ) { + $shop_sidebar = 'default'; + } else { + $shop_sidebar = astra_get_option_meta( 'site-sidebar-layout', '', true ); + } + + if ( 'default' !== $shop_sidebar && ! empty( $shop_sidebar ) ) { + $sidebar_layout = $shop_sidebar; + } + } + + return $sidebar_layout; + } + /** + * WooCommerce Container + * + * @param String $layout Layout type. + * + * @return String $layout Layout type. + */ + public function store_content_layout( $layout ) { + + if ( is_woocommerce() || is_checkout() || is_cart() || is_account_page() ) { + + $woo_layout = astra_get_option( 'woocommerce-content-layout' ); + + if ( 'default' !== $woo_layout ) { + + $layout = $woo_layout; + } + + if ( is_shop() ) { + $shop_page_id = get_option( 'woocommerce_shop_page_id' ); + $shop_layout = get_post_meta( $shop_page_id, 'site-content-layout', true ); + } elseif ( is_product_taxonomy() ) { + $shop_layout = 'default'; + } else { + $shop_layout = astra_get_option_meta( 'site-content-layout', '', true ); + } + + if ( 'default' !== $shop_layout && ! empty( $shop_layout ) ) { + $layout = $shop_layout; + } + } + + return apply_filters( 'astra_get_store_content_layout', $layout ); + } + + /** + * Shop Page Meta + * + * @return void + */ + public function shop_meta_option() { + + // Page Title. + if ( is_shop() ) { + + $shop_page_id = get_option( 'woocommerce_shop_page_id' ); + $shop_title = get_post_meta( $shop_page_id, 'site-post-title', true ); + $main_header_display = get_post_meta( $shop_page_id, 'ast-main-header-display', true ); + $footer_layout = get_post_meta( $shop_page_id, 'footer-sml-layout', true ); + + if ( 'disabled' === $shop_title ) { + add_filter( 'woocommerce_show_page_title', '__return_false' ); + } + + if ( 'disabled' === $main_header_display ) { + remove_action( 'astra_masthead', 'astra_masthead_primary_template' ); + } + + if ( 'disabled' === $footer_layout ) { + remove_action( 'astra_footer_content', 'astra_footer_small_footer_template', 5 ); + } + } + } + + + /** + * Shop customization. + * + * @return void + */ + public function shop_customization() { + + if ( ! apply_filters( 'astra_woo_shop_product_structure_override', false ) ) { + + add_action( 'woocommerce_before_shop_loop_item', 'astra_woo_shop_thumbnail_wrap_start', 6 ); + /** + * Add sale flash before shop loop. + */ + add_action( 'woocommerce_before_shop_loop_item', 'woocommerce_show_product_loop_sale_flash', 9 ); + + add_action( 'woocommerce_after_shop_loop_item', 'astra_woo_shop_thumbnail_wrap_end', 8 ); + /** + * Add Out of Stock to the Shop page + */ + add_action( 'woocommerce_shop_loop_item_title', 'astra_woo_shop_out_of_stock', 8 ); + + remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 ); + + /** + * Shop Page Product Content Sorting + */ + add_action( 'woocommerce_after_shop_loop_item', 'astra_woo_woocommerce_shop_product_content' ); + } + } + + /** + * Checkout customization. + * + * @return void + */ + public function woocommerce_checkout() { + + if ( is_admin() ) { + return; + } + + if ( ! apply_filters( 'astra_woo_shop_product_structure_override', false ) ) { + + /** + * Checkout Page + */ + add_action( 'woocommerce_checkout_billing', array( WC()->checkout(), 'checkout_form_shipping' ) ); + } + + // Checkout Page. + remove_action( 'woocommerce_checkout_shipping', array( WC()->checkout(), 'checkout_form_shipping' ) ); + } + + /** + * Single product customization. + * + * @return void + */ + public function single_product_customization() { + + if ( ! is_product() ) { + return; + } + + add_filter( 'woocommerce_product_description_heading', '__return_false' ); + add_filter( 'woocommerce_product_additional_information_heading', '__return_false' ); + + // Breadcrumb. + remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0 ); + if ( ! astra_get_option( 'single-product-breadcrumb-disable' ) ) { + add_action( 'woocommerce_single_product_summary', 'woocommerce_breadcrumb', 2 ); + } + } + + /** + * Remove Woo-Commerce Default actions + */ + public function woocommerce_init() { + remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10 ); + remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10 ); + remove_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10 ); + remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_rating', 5 ); + remove_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title', 10 ); + remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 ); + remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 10 ); + } + + /** + * Add start of wrapper + */ + public function before_main_content_start() { + $site_sidebar = astra_page_layout(); + if ( 'left-sidebar' == $site_sidebar ) { + get_sidebar(); + } + ?> + <div id="primary" class="content-area primary"> + + <?php astra_primary_content_top(); ?> + + <main id="main" class="site-main"> + <div class="ast-woocommerce-container"> + <?php + } + + /** + * Add end of wrapper + */ + public function before_main_content_end() { + ?> + </div> <!-- .ast-woocommerce-container --> + </main> <!-- #main --> + + <?php astra_primary_content_bottom(); ?> + + </div> <!-- #primary --> + <?php + $site_sidebar = astra_page_layout(); + if ( 'right-sidebar' == $site_sidebar ) { + get_sidebar(); + } + } + + /** + * Enqueue styles + * + * @since 1.0.31 + */ + public function add_styles() { + + /** + * - Variable Declaration + */ + $is_site_rtl = is_rtl(); + $theme_color = astra_get_option( 'theme-color' ); + $link_color = astra_get_option( 'link-color', $theme_color ); + $text_color = astra_get_option( 'text-color' ); + $link_h_color = astra_get_option( 'link-h-color' ); + + $btn_color = astra_get_option( 'button-color' ); + if ( empty( $btn_color ) ) { + $btn_color = astra_get_foreground_color( $theme_color ); + } + + $btn_h_color = astra_get_option( 'button-h-color' ); + if ( empty( $btn_h_color ) ) { + $btn_h_color = astra_get_foreground_color( $link_h_color ); + } + $btn_bg_color = astra_get_option( 'button-bg-color', '', $theme_color ); + $btn_bg_h_color = astra_get_option( 'button-bg-h-color', '', $link_h_color ); + + $btn_border_radius = astra_get_option( 'button-radius' ); + $theme_btn_padding = astra_get_option( 'theme-button-padding' ); + + $cart_h_color = astra_get_foreground_color( $link_h_color ); + + $site_content_width = astra_get_option( 'site-content-width', 1200 ); + $woo_shop_archive_width = astra_get_option( 'shop-archive-width' ); + $woo_shop_archive_max_width = astra_get_option( 'shop-archive-max-width' ); + + // global button border settings. + $global_custom_button_border_size = astra_get_option( 'theme-button-border-group-border-size' ); + $btn_border_color = astra_get_option( 'theme-button-border-group-border-color' ); + $btn_border_h_color = astra_get_option( 'theme-button-border-group-border-h-color' ); + + $css_output = array( + '.woocommerce span.onsale, .wc-block-grid__product .wc-block-grid__product-onsale' => array( + 'background-color' => $theme_color, + 'color' => astra_get_foreground_color( $theme_color ), + ), + '.woocommerce a.button, .woocommerce button.button, .woocommerce .woocommerce-message a.button, .woocommerce #respond input#submit.alt, .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt, .woocommerce input.button,.woocommerce input.button:disabled, .woocommerce input.button:disabled[disabled], .woocommerce input.button:disabled:hover, .woocommerce input.button:disabled[disabled]:hover, .woocommerce #respond input#submit, .woocommerce button.button.alt.disabled, .wc-block-grid__products .wc-block-grid__product .wp-block-button__link, .wc-block-grid__product-onsale' => array( + 'color' => $btn_color, + 'border-color' => $btn_bg_color, + 'background-color' => $btn_bg_color, + ), + '.woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce .woocommerce-message a.button:hover,.woocommerce #respond input#submit:hover,.woocommerce #respond input#submit.alt:hover, .woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover, .woocommerce input.button.alt:hover, .woocommerce input.button:hover, .woocommerce button.button.alt.disabled:hover, .wc-block-grid__products .wc-block-grid__product .wp-block-button__link:hover' => array( + 'color' => $btn_h_color, + 'border-color' => $btn_bg_h_color, + 'background-color' => $btn_bg_h_color, + ), + '.woocommerce-message, .woocommerce-info' => array( + 'border-top-color' => $link_color, + ), + '.woocommerce-message::before,.woocommerce-info::before' => array( + 'color' => $link_color, + ), + '.woocommerce ul.products li.product .price, .woocommerce div.product p.price, .woocommerce div.product span.price, .widget_layered_nav_filters ul li.chosen a, .woocommerce-page ul.products li.product .ast-woo-product-category, .wc-layered-nav-rating a' => array( + 'color' => $text_color, + ), + // Form Fields, Pagination border Color. + '.woocommerce nav.woocommerce-pagination ul,.woocommerce nav.woocommerce-pagination ul li' => array( + 'border-color' => $link_color, + ), + '.woocommerce nav.woocommerce-pagination ul li a:focus, .woocommerce nav.woocommerce-pagination ul li a:hover, .woocommerce nav.woocommerce-pagination ul li span.current' => array( + 'background' => $link_color, + 'color' => $btn_color, + ), + '.woocommerce-MyAccount-navigation-link.is-active a' => array( + 'color' => $link_h_color, + ), + '.woocommerce .widget_price_filter .ui-slider .ui-slider-range, .woocommerce .widget_price_filter .ui-slider .ui-slider-handle' => array( + 'background-color' => $link_color, + ), + // Button Typography. + '.woocommerce a.button, .woocommerce button.button, .woocommerce .woocommerce-message a.button, .woocommerce #respond input#submit.alt, .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt, .woocommerce input.button,.woocommerce-cart table.cart td.actions .button, .woocommerce form.checkout_coupon .button, .woocommerce #respond input#submit, .wc-block-grid__products .wc-block-grid__product .wp-block-button__link' => array( + 'border-radius' => astra_get_css_value( $btn_border_radius, 'px' ), + 'padding-top' => astra_responsive_spacing( $theme_btn_padding, 'top', 'desktop' ), + 'padding-right' => astra_responsive_spacing( $theme_btn_padding, 'right', 'desktop' ), + 'padding-bottom' => astra_responsive_spacing( $theme_btn_padding, 'bottom', 'desktop' ), + 'padding-left' => astra_responsive_spacing( $theme_btn_padding, 'left', 'desktop' ), + ), + '.woocommerce .star-rating, .woocommerce .comment-form-rating .stars a, .woocommerce .star-rating::before' => array( + 'color' => $link_color, + ), + '.woocommerce div.product .woocommerce-tabs ul.tabs li.active:before' => array( + 'background' => $link_color, + ), + '.woocommerce a.remove:hover' => array( + 'color' => esc_attr( $link_color ), + 'border-color' => esc_attr( $link_color ), + 'background-color' => esc_attr( '#ffffff' ), + ), + ); + + if ( false === Astra_Builder_Helper::$is_header_footer_builder_active ) { + + $compat_css_desktop = array( + /** + * Cart in menu + */ + '.ast-site-header-cart a' => array( + 'color' => esc_attr( $text_color ), + ), + + '.ast-site-header-cart a:focus, .ast-site-header-cart a:hover, .ast-site-header-cart .current-menu-item a' => array( + 'color' => esc_attr( $link_color ), + ), + + '.ast-cart-menu-wrap .count, .ast-cart-menu-wrap .count:after' => array( + 'border-color' => esc_attr( $link_color ), + 'color' => esc_attr( $link_color ), + ), + + '.ast-cart-menu-wrap:hover .count' => array( + 'color' => esc_attr( $cart_h_color ), + 'background-color' => esc_attr( $link_color ), + ), + + '.ast-site-header-cart .widget_shopping_cart .total .woocommerce-Price-amount' => array( + 'color' => esc_attr( $link_color ), + ), + + '.woocommerce a.remove:hover, .ast-woocommerce-cart-menu .main-header-menu .woocommerce-custom-menu-item .menu-item:hover > .menu-link.remove:hover' => array( + 'color' => esc_attr( $link_color ), + 'border-color' => esc_attr( $link_color ), + 'background-color' => esc_attr( '#ffffff' ), + ), + + /** + * Checkout button color for widget + */ + '.ast-site-header-cart .widget_shopping_cart .buttons .button.checkout, .woocommerce .widget_shopping_cart .woocommerce-mini-cart__buttons .checkout.wc-forward' => array( + 'color' => $btn_h_color, + 'border-color' => $btn_bg_h_color, + 'background-color' => $btn_bg_h_color, + ), + '.site-header .ast-site-header-cart-data .button.wc-forward, .site-header .ast-site-header-cart-data .button.wc-forward:hover' => array( + 'color' => $btn_color, + ), + '.below-header-user-select .ast-site-header-cart .widget, .ast-above-header-section .ast-site-header-cart .widget a, .below-header-user-select .ast-site-header-cart .widget_shopping_cart a' => array( + 'color' => $text_color, + ), + '.below-header-user-select .ast-site-header-cart .widget_shopping_cart a:hover, .ast-above-header-section .ast-site-header-cart .widget_shopping_cart a:hover, .below-header-user-select .ast-site-header-cart .widget_shopping_cart a.remove:hover, .ast-above-header-section .ast-site-header-cart .widget_shopping_cart a.remove:hover' => array( + 'color' => esc_attr( $link_color ), + ), + ); + + $css_output = array_merge( $css_output, $compat_css_desktop ); + } + + if ( Astra_Builder_Helper::apply_flex_based_css() ) { + $css_output['.woocommerce[class*="rel-up-columns-"] .site-main div.product .related.products ul.products li.product, .woocommerce-page .site-main ul.products li.product'] = array( + 'width' => '100%', + ); + } + + if ( false === Astra_Icons::is_svg_icons() ) { + $css_output['.woocommerce ul.product-categories > li ul li:before'] = array( + 'content' => '"\e900"', + 'padding' => '0 5px 0 5px', + 'display' => 'inline-block', + 'font-family' => 'Astra', + 'transform' => 'rotate(-90deg)', + 'font-size' => '11px', + 'font-size' => '0.7rem', + ); + } else { + $css_output['.woocommerce ul.product-categories > li ul li'] = array( + 'position' => 'relative', + ); + if ( $is_site_rtl ) { + $css_output['.woocommerce ul.product-categories > li ul li:before'] = array( + 'content' => '""', + 'border-width' => '1px 0 0 1px', + 'border-style' => 'solid', + 'display' => 'inline-block', + 'width' => '6px', + 'height' => '6px', + 'position' => 'absolute', + 'top' => '50%', + 'margin-top' => '-2px', + '-webkit-transform' => 'rotate(45deg)', + 'transform' => 'rotate(45deg)', + ); + $css_output['.woocommerce ul.product-categories > li ul li a'] = array( + 'margin-right' => '15px', + ); + } else { + $css_output['.woocommerce ul.product-categories > li ul li:before'] = array( + 'content' => '""', + 'border-width' => '1px 1px 0 0', + 'border-style' => 'solid', + 'display' => 'inline-block', + 'width' => '6px', + 'height' => '6px', + 'position' => 'absolute', + 'top' => '50%', + 'margin-top' => '-2px', + '-webkit-transform' => 'rotate(45deg)', + 'transform' => 'rotate(45deg)', + ); + $css_output['.woocommerce ul.product-categories > li ul li a'] = array( + 'margin-left' => '15px', + ); + } + } + + /* Parse WooCommerce General CSS from array() */ + $css_output = astra_parse_css( $css_output ); + + if ( ! Astra_Builder_Helper::apply_flex_based_css() ) { + $tablet_css_shop_page_grid = array( + '.woocommerce.tablet-columns-6 ul.products li.product, .woocommerce-page.tablet-columns-6 ul.products li.product' => array( + 'width' => '12.7%', + 'width' => 'calc(16.66% - 16.66px)', + ), + '.woocommerce.tablet-columns-5 ul.products li.product, .woocommerce-page.tablet-columns-5 ul.products li.product' => array( + 'width' => '16.2%', + 'width' => 'calc(20% - 16px)', + ), + '.woocommerce.tablet-columns-4 ul.products li.product, .woocommerce-page.tablet-columns-4 ul.products li.product' => array( + 'width' => '21.5%', + 'width' => 'calc(25% - 15px)', + ), + '.woocommerce.tablet-columns-3 ul.products li.product, .woocommerce-page.tablet-columns-3 ul.products li.product' => array( + 'width' => '30.2%', + 'width' => 'calc(33.33% - 14px)', + ), + '.woocommerce.tablet-columns-2 ul.products li.product, .woocommerce-page.tablet-columns-2 ul.products li.product' => array( + 'width' => '47.6%', + 'width' => 'calc(50% - 10px)', + ), + '.woocommerce.tablet-columns-1 ul.products li.product, .woocommerce-page.tablet-columns-1 ul.products li.product' => array( + 'width' => '100%', + ), + '.woocommerce div.product .related.products ul.products li.product' => array( + 'width' => '30.2%', + 'width' => 'calc(33.33% - 14px)', + ), + ); + + } else { + $archive_tablet_grid = $this->get_grid_column_count( 'archive', 'tablet' ); + + $tablet_css_shop_page_grid = array( + '.woocommerce.tablet-columns-' . $archive_tablet_grid . ' ul.products li.product, .woocommerce-page.tablet-columns-' . $archive_tablet_grid . ' ul.products' => array( + 'grid-template-columns' => 'repeat(' . $archive_tablet_grid . ', minmax(0, 1fr))', + ), + ); + } + $css_output .= astra_parse_css( $tablet_css_shop_page_grid, astra_get_mobile_breakpoint( '', 1 ), astra_get_tablet_breakpoint() ); + + if ( ! Astra_Builder_Helper::apply_flex_based_css() ) { + if ( $is_site_rtl ) { + $tablet_shop_page_grid_lang_direction_css = array( + '.woocommerce[class*="columns-"].columns-3 > ul.products li.product, .woocommerce[class*="columns-"].columns-4 > ul.products li.product, .woocommerce[class*="columns-"].columns-5 > ul.products li.product, .woocommerce[class*="columns-"].columns-6 > ul.products li.product' => array( + 'width' => '30.2%', + 'width' => 'calc(33.33% - 14px)', + 'margin-left' => '20px', + ), + '.woocommerce[class*="columns-"].columns-3 > ul.products li.product:nth-child(3n), .woocommerce[class*="columns-"].columns-4 > ul.products li.product:nth-child(3n), .woocommerce[class*="columns-"].columns-5 > ul.products li.product:nth-child(3n), .woocommerce[class*="columns-"].columns-6 > ul.products li.product:nth-child(3n)' => array( + 'margin-left' => 0, + 'clear' => 'left', + ), + '.woocommerce[class*="columns-"].columns-3 > ul.products li.product:nth-child(3n+1), .woocommerce[class*="columns-"].columns-4 > ul.products li.product:nth-child(3n+1), .woocommerce[class*="columns-"].columns-5 > ul.products li.product:nth-child(3n+1), .woocommerce[class*="columns-"].columns-6 > ul.products li.product:nth-child(3n+1)' => array( + 'clear' => 'right', + ), + '.woocommerce[class*="columns-"] ul.products li.product:nth-child(n), .woocommerce-page[class*="columns-"] ul.products li.product:nth-child(n)' => array( + 'margin-left' => '20px', + 'clear' => 'none', + ), + '.woocommerce.tablet-columns-2 ul.products li.product:nth-child(2n), .woocommerce-page.tablet-columns-2 ul.products li.product:nth-child(2n), .woocommerce.tablet-columns-3 ul.products li.product:nth-child(3n), .woocommerce-page.tablet-columns-3 ul.products li.product:nth-child(3n), .woocommerce.tablet-columns-4 ul.products li.product:nth-child(4n), .woocommerce-page.tablet-columns-4 ul.products li.product:nth-child(4n), .woocommerce.tablet-columns-5 ul.products li.product:nth-child(5n), .woocommerce-page.tablet-columns-5 ul.products li.product:nth-child(5n), .woocommerce.tablet-columns-6 ul.products li.product:nth-child(6n), .woocommerce-page.tablet-columns-6 ul.products li.product:nth-child(6n)' => array( + 'margin-left' => '0', + 'clear' => 'left', + ), + '.woocommerce.tablet-columns-2 ul.products li.product:nth-child(2n+1), .woocommerce-page.tablet-columns-2 ul.products li.product:nth-child(2n+1), .woocommerce.tablet-columns-3 ul.products li.product:nth-child(3n+1), .woocommerce-page.tablet-columns-3 ul.products li.product:nth-child(3n+1), .woocommerce.tablet-columns-4 ul.products li.product:nth-child(4n+1), .woocommerce-page.tablet-columns-4 ul.products li.product:nth-child(4n+1), .woocommerce.tablet-columns-5 ul.products li.product:nth-child(5n+1), .woocommerce-page.tablet-columns-5 ul.products li.product:nth-child(5n+1), .woocommerce.tablet-columns-6 ul.products li.product:nth-child(6n+1), .woocommerce-page.tablet-columns-6 ul.products li.product:nth-child(6n+1)' => array( + 'clear' => 'right', + ), + '.woocommerce div.product .related.products ul.products li.product:nth-child(3n), .woocommerce-page.tablet-columns-1 .site-main ul.products li.product' => array( + 'margin-left' => 0, + 'clear' => 'left', + ), + '.woocommerce div.product .related.products ul.products li.product:nth-child(3n+1)' => array( + 'clear' => 'right', + ), + ); + } else { + $tablet_shop_page_grid_lang_direction_css = array( + '.woocommerce[class*="columns-"].columns-3 > ul.products li.product, .woocommerce[class*="columns-"].columns-4 > ul.products li.product, .woocommerce[class*="columns-"].columns-5 > ul.products li.product, .woocommerce[class*="columns-"].columns-6 > ul.products li.product' => array( + 'width' => '30.2%', + 'width' => 'calc(33.33% - 14px)', + 'margin-right' => '20px', + ), + '.woocommerce[class*="columns-"].columns-3 > ul.products li.product:nth-child(3n), .woocommerce[class*="columns-"].columns-4 > ul.products li.product:nth-child(3n), .woocommerce[class*="columns-"].columns-5 > ul.products li.product:nth-child(3n), .woocommerce[class*="columns-"].columns-6 > ul.products li.product:nth-child(3n)' => array( + 'margin-right' => 0, + 'clear' => 'right', + ), + '.woocommerce[class*="columns-"].columns-3 > ul.products li.product:nth-child(3n+1), .woocommerce[class*="columns-"].columns-4 > ul.products li.product:nth-child(3n+1), .woocommerce[class*="columns-"].columns-5 > ul.products li.product:nth-child(3n+1), .woocommerce[class*="columns-"].columns-6 > ul.products li.product:nth-child(3n+1)' => array( + 'clear' => 'left', + ), + '.woocommerce[class*="columns-"] ul.products li.product:nth-child(n), .woocommerce-page[class*="columns-"] ul.products li.product:nth-child(n)' => array( + 'margin-right' => '20px', + 'clear' => 'none', + ), + '.woocommerce.tablet-columns-2 ul.products li.product:nth-child(2n), .woocommerce-page.tablet-columns-2 ul.products li.product:nth-child(2n), .woocommerce.tablet-columns-3 ul.products li.product:nth-child(3n), .woocommerce-page.tablet-columns-3 ul.products li.product:nth-child(3n), .woocommerce.tablet-columns-4 ul.products li.product:nth-child(4n), .woocommerce-page.tablet-columns-4 ul.products li.product:nth-child(4n), .woocommerce.tablet-columns-5 ul.products li.product:nth-child(5n), .woocommerce-page.tablet-columns-5 ul.products li.product:nth-child(5n), .woocommerce.tablet-columns-6 ul.products li.product:nth-child(6n), .woocommerce-page.tablet-columns-6 ul.products li.product:nth-child(6n)' => array( + 'margin-right' => '0', + 'clear' => 'right', + ), + '.woocommerce.tablet-columns-2 ul.products li.product:nth-child(2n+1), .woocommerce-page.tablet-columns-2 ul.products li.product:nth-child(2n+1), .woocommerce.tablet-columns-3 ul.products li.product:nth-child(3n+1), .woocommerce-page.tablet-columns-3 ul.products li.product:nth-child(3n+1), .woocommerce.tablet-columns-4 ul.products li.product:nth-child(4n+1), .woocommerce-page.tablet-columns-4 ul.products li.product:nth-child(4n+1), .woocommerce.tablet-columns-5 ul.products li.product:nth-child(5n+1), .woocommerce-page.tablet-columns-5 ul.products li.product:nth-child(5n+1), .woocommerce.tablet-columns-6 ul.products li.product:nth-child(6n+1), .woocommerce-page.tablet-columns-6 ul.products li.product:nth-child(6n+1)' => array( + 'clear' => 'left', + ), + '.woocommerce div.product .related.products ul.products li.product:nth-child(3n), .woocommerce-page.tablet-columns-1 .site-main ul.products li.product' => array( + 'margin-right' => 0, + 'clear' => 'right', + ), + '.woocommerce div.product .related.products ul.products li.product:nth-child(3n+1)' => array( + 'clear' => 'left', + ), + ); + } + $css_output .= astra_parse_css( $tablet_shop_page_grid_lang_direction_css, astra_get_mobile_breakpoint( '', 1 ), astra_get_tablet_breakpoint() ); + } + + /** + * Global button CSS - Tablet = min-wdth: (tablet + 1)px + */ + if ( $is_site_rtl ) { + $min_tablet_css = array( + '.woocommerce #reviews #comments' => array( + 'width' => '55%', + 'float' => 'right', + ), + '.woocommerce #reviews #review_form_wrapper' => array( + 'width' => '45%', + 'float' => 'left', + 'padding-right' => '2em', + ), + '.woocommerce form.checkout_coupon' => array( + 'width' => '50%', + ), + ); + if ( ! Astra_Builder_Helper::apply_flex_based_css() ) { + $min_tablet_css['.woocommerce #reviews #comments']['float'] = 'right'; + $min_tablet_css['.woocommerce #reviews #review_form_wrapper']['float'] = 'left'; + } + } else { + $min_tablet_css = array( + '.woocommerce #reviews #comments' => array( + 'width' => '55%', + ), + '.woocommerce #reviews #review_form_wrapper' => array( + 'width' => '45%', + 'padding-left' => '2em', + ), + '.woocommerce form.checkout_coupon' => array( + 'width' => '50%', + ), + ); + + if ( ! Astra_Builder_Helper::apply_flex_based_css() ) { + $min_tablet_css['.woocommerce #reviews #comments']['float'] = 'left'; + $min_tablet_css['.woocommerce #reviews #review_form_wrapper']['float'] = 'right'; + } + } + + $css_output .= astra_parse_css( $min_tablet_css, astra_get_tablet_breakpoint( '', 1 ) ); + + /** + * Global button CSS - Tablet = max-width: (tab-breakpoint)px. + */ + $css_global_button_tablet = array( + '.ast-header-break-point.ast-woocommerce-cart-menu .header-main-layout-1.ast-mobile-header-stack.ast-no-menu-items .ast-site-header-cart, .ast-header-break-point.ast-woocommerce-cart-menu .header-main-layout-3.ast-mobile-header-stack.ast-no-menu-items .ast-site-header-cart' => array( + 'padding-right' => 0, + 'padding-left' => 0, + ), + '.ast-header-break-point.ast-woocommerce-cart-menu .header-main-layout-1.ast-mobile-header-stack .main-header-bar' => array( + 'text-align' => 'center', + ), + '.ast-header-break-point.ast-woocommerce-cart-menu .header-main-layout-1.ast-mobile-header-stack .ast-site-header-cart, .ast-header-break-point.ast-woocommerce-cart-menu .header-main-layout-1.ast-mobile-header-stack .ast-mobile-menu-buttons' => array( + 'display' => 'inline-block', + ), + '.ast-header-break-point.ast-woocommerce-cart-menu .header-main-layout-2.ast-mobile-header-inline .site-branding' => array( + 'flex' => 'auto', + ), + '.ast-header-break-point.ast-woocommerce-cart-menu .header-main-layout-3.ast-mobile-header-stack .site-branding' => array( + 'flex' => '0 0 100%', + ), + '.ast-header-break-point.ast-woocommerce-cart-menu .header-main-layout-3.ast-mobile-header-stack .main-header-container' => array( + 'display' => 'flex', + 'justify-content' => 'center', + ), + '.woocommerce-cart .woocommerce-shipping-calculator .button' => array( + 'width' => '100%', + ), + '.woocommerce a.button, .woocommerce button.button, .woocommerce .woocommerce-message a.button, .woocommerce #respond input#submit.alt, .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt, .woocommerce input.button,.woocommerce-cart table.cart td.actions .button, .woocommerce form.checkout_coupon .button, .woocommerce #respond input#submit, .wc-block-grid__products .wc-block-grid__product .wp-block-button__link' => array( + 'padding-top' => astra_responsive_spacing( $theme_btn_padding, 'top', 'tablet' ), + 'padding-right' => astra_responsive_spacing( $theme_btn_padding, 'right', 'tablet' ), + 'padding-bottom' => astra_responsive_spacing( $theme_btn_padding, 'bottom', 'tablet' ), + 'padding-left' => astra_responsive_spacing( $theme_btn_padding, 'left', 'tablet' ), + ), + '.woocommerce div.product div.images, .woocommerce div.product div.summary, .woocommerce #content div.product div.images, .woocommerce #content div.product div.summary, .woocommerce-page div.product div.images, .woocommerce-page div.product div.summary, .woocommerce-page #content div.product div.images, .woocommerce-page #content div.product div.summary' => array( + 'float' => 'none', + 'width' => '100%', + ), + '.woocommerce-cart table.cart td.actions .ast-return-to-shop' => array( + 'display' => 'block', + 'text-align' => 'center', + 'margin-top' => '1em', + ), + ); + + if ( Astra_Builder_Helper::apply_flex_based_css() ) { + $css_global_button_tablet['.woocommerce ul.products, .woocommerce-page ul.products'] = array( + 'grid-template-columns' => 'repeat(3, minmax(0, 1fr))', + ); + + if ( is_shop() || is_product_taxonomy() ) { + + $archive_tablet_grid = $this->get_grid_column_count( 'archive', 'tablet' ); + + $css_global_button_tablet[ '.woocommerce.tablet-columns-' . $archive_tablet_grid . ' ul.products' ] = array( + 'grid-template-columns' => 'repeat(' . $archive_tablet_grid . ', minmax(0, 1fr))', + ); + $css_global_button_tablet['.woocommerce[class*="tablet-columns-"] .site-main div.product .related.products ul.products li.product'] = array( + 'width' => '100%', + ); + } + + if ( is_product() ) { + + $single_tablet_grid = $this->get_grid_column_count( 'single', 'tablet' ); + + $css_global_button_tablet[ '.woocommerce.tablet-rel-up-columns-' . $single_tablet_grid . ' ul.products' ] = array( + 'grid-template-columns' => 'repeat(' . $single_tablet_grid . ', minmax(0, 1fr))', + ); + $css_global_button_tablet['.woocommerce[class*="tablet-rel-up-columns-"] .site-main div.product .related.products ul.products li.product'] = array( + 'width' => '100%', + ); + } + } + + $css_output .= astra_parse_css( $css_global_button_tablet, '', astra_get_tablet_breakpoint() ); + + /** + * Global button CSS - Mobile = max-width: (mobile-breakpoint)px. + */ + $css_global_button_mobile = array( + '.ast-separate-container .ast-woocommerce-container' => array( + 'padding' => '.54em 1em 1.33333em', + ), + '.woocommerce a.button, .woocommerce button.button, .woocommerce .woocommerce-message a.button, .woocommerce #respond input#submit.alt, .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt, .woocommerce input.button,.woocommerce-cart table.cart td.actions .button, .woocommerce form.checkout_coupon .button, .woocommerce #respond input#submit, .wc-block-grid__products .wc-block-grid__product .wp-block-button__link' => array( + 'padding-top' => astra_responsive_spacing( $theme_btn_padding, 'top', 'mobile' ), + 'padding-right' => astra_responsive_spacing( $theme_btn_padding, 'right', 'mobile' ), + 'padding-bottom' => astra_responsive_spacing( $theme_btn_padding, 'bottom', 'mobile' ), + 'padding-left' => astra_responsive_spacing( $theme_btn_padding, 'left', 'mobile' ), + ), + '.woocommerce-message, .woocommerce-error, .woocommerce-info' => array( + 'display' => 'flex', + 'flex-wrap' => 'wrap', + ), + '.woocommerce-message a.button, .woocommerce-error a.button, .woocommerce-info a.button' => array( + 'order' => '1', + 'margin-top' => '.5em', + ), + + '.woocommerce .woocommerce-ordering, .woocommerce-page .woocommerce-ordering' => array( + 'float' => 'none', + 'margin-bottom' => '2em', + 'width' => '100%', + ), + '.woocommerce ul.products a.button, .woocommerce-page ul.products a.button' => array( + 'padding' => '0.5em 0.75em', + ), + '.woocommerce table.cart td.actions .button, .woocommerce #content table.cart td.actions .button, .woocommerce-page table.cart td.actions .button, .woocommerce-page #content table.cart td.actions .button' => array( + 'padding-left' => '1em', + 'padding-right' => '1em', + ), + '.woocommerce #content table.cart .button, .woocommerce-page #content table.cart .button' => array( + 'width' => '100%', + ), + '.woocommerce #content table.cart .product-thumbnail, .woocommerce-page #content table.cart .product-thumbnail' => array( + 'display' => 'block', + 'text-align' => 'center !important', + ), + '.woocommerce #content table.cart .product-thumbnail::before, .woocommerce-page #content table.cart .product-thumbnail::before' => array( + 'display' => 'none', + ), + '.woocommerce #content table.cart td.actions .coupon, .woocommerce-page #content table.cart td.actions .coupon' => array( + 'float' => 'none', + ), + '.woocommerce #content table.cart td.actions .coupon .button, .woocommerce-page #content table.cart td.actions .coupon .button' => array( + 'flex' => '1', + ), + '.woocommerce #content div.product .woocommerce-tabs ul.tabs li a, .woocommerce-page #content div.product .woocommerce-tabs ul.tabs li a' => array( + 'display' => 'block', + ), + ); + + if ( ! Astra_Builder_Helper::apply_flex_based_css() ) { + $css_global_button_mobile['.woocommerce div.product .related.products ul.products li.product, .woocommerce.mobile-columns-2 ul.products li.product, .woocommerce-page.mobile-columns-2 ul.products li.product'] = array( + 'width' => '46.1%', + 'width' => 'calc(50% - 10px)', + ); + $css_global_button_mobile['.woocommerce.mobile-columns-6 ul.products li.product, .woocommerce-page.mobile-columns-6 ul.products li.product'] = array( + 'width' => '10.2%', + 'width' => 'calc(16.66% - 16.66px)', + ); + $css_global_button_mobile['.woocommerce.mobile-columns-5 ul.products li.product, .woocommerce-page.mobile-columns-5 ul.products li.product'] = array( + 'width' => '13%', + 'width' => 'calc(20% - 16px)', + ); + $css_global_button_mobile['.woocommerce.mobile-columns-4 ul.products li.product, .woocommerce-page.mobile-columns-4 ul.products li.product'] = array( + 'width' => '19%', + 'width' => 'calc(25% - 15px)', + ); + $css_global_button_mobile['.woocommerce.mobile-columns-3 ul.products li.product, .woocommerce-page.mobile-columns-3 ul.products li.product'] = array( + 'width' => '28.2%', + 'width' => 'calc(33.33% - 14px)', + ); + $css_global_button_mobile['.woocommerce.mobile-columns-1 ul.products li.product, .woocommerce-page.mobile-columns-1 ul.products li.product'] = array( + 'width' => '100%', + ); + } else { + + $archive_mobile_grid = $this->get_grid_column_count( 'archive', 'mobile' ); + $single_mobile_grid = $this->get_grid_column_count( 'single', 'mobile' ); + + $css_global_button_mobile[ '.woocommerce ul.products, .woocommerce-page ul.products, .woocommerce.mobile-columns-' . $archive_mobile_grid . ' ul.products, .woocommerce-page.mobile-columns-' . $archive_mobile_grid . ' ul.products' ] = array( + 'grid-template-columns' => 'repeat(' . $archive_mobile_grid . ', minmax(0, 1fr))', + ); + $css_global_button_mobile[ '.woocommerce.mobile-rel-up-columns-' . $single_mobile_grid . ' ul.products' ] = array( + 'grid-template-columns' => 'repeat(' . $single_mobile_grid . ', minmax(0, 1fr))', + ); + } + + $css_output .= astra_parse_css( $css_global_button_mobile, '', astra_get_mobile_breakpoint() ); + + if ( $is_site_rtl ) { + $global_button_mobile_lang_direction_css = array( + '.woocommerce[class*="columns-"].columns-3 > ul.products li.product, .woocommerce[class*="columns-"].columns-4 > ul.products li.product, .woocommerce[class*="columns-"].columns-5 > ul.products li.product, .woocommerce[class*="columns-"].columns-6 > ul.products li.product' => array( + 'width' => '46.1%', + 'width' => 'calc(50% - 10px)', + 'margin-left' => '20px', + ), + '.woocommerce ul.products a.button.loading::after, .woocommerce-page ul.products a.button.loading::after' => array( + 'display' => 'inline-block', + 'margin-right' => '5px', + 'position' => 'initial', + ), + '.woocommerce.mobile-columns-1 .site-main ul.products li.product:nth-child(n), .woocommerce-page.mobile-columns-1 .site-main ul.products li.product:nth-child(n)' => array( + 'margin-left' => 0, + ), + '.woocommerce #content div.product .woocommerce-tabs ul.tabs li, .woocommerce-page #content div.product .woocommerce-tabs ul.tabs li' => array( + 'display' => 'block', + 'margin-left' => 0, + ), + ); + + if ( ! Astra_Builder_Helper::apply_flex_based_css() ) { + $global_button_mobile_lang_direction_css['.woocommerce[class*="columns-"] ul.products li.product:nth-child(n), .woocommerce-page[class*="columns-"] ul.products li.product:nth-child(n)'] = array( + 'margin-left' => '20px', + 'clear' => 'none', + ); + $global_button_mobile_lang_direction_css['.woocommerce-page[class*=columns-].columns-3>ul.products li.product:nth-child(2n), .woocommerce-page[class*=columns-].columns-4>ul.products li.product:nth-child(2n), .woocommerce-page[class*=columns-].columns-5>ul.products li.product:nth-child(2n), .woocommerce-page[class*=columns-].columns-6>ul.products li.product:nth-child(2n), .woocommerce[class*=columns-].columns-3>ul.products li.product:nth-child(2n), .woocommerce[class*=columns-].columns-4>ul.products li.product:nth-child(2n), .woocommerce[class*=columns-].columns-5>ul.products li.product:nth-child(2n), .woocommerce[class*=columns-].columns-6>ul.products li.product:nth-child(2n)'] = array( + 'margin-left' => 0, + 'clear' => 'left', + ); + $global_button_mobile_lang_direction_css['.woocommerce[class*="columns-"].columns-3 > ul.products li.product:nth-child(2n+1), .woocommerce[class*="columns-"].columns-4 > ul.products li.product:nth-child(2n+1), .woocommerce[class*="columns-"].columns-5 > ul.products li.product:nth-child(2n+1), .woocommerce[class*="columns-"].columns-6 > ul.products li.product:nth-child(2n+1)'] = array( + 'clear' => 'right', + ); + $global_button_mobile_lang_direction_css['.woocommerce-page[class*=columns-] ul.products li.product:nth-child(n), .woocommerce[class*=columns-] ul.products li.product:nth-child(n)'] = array( + 'margin-left' => '20px', + 'clear' => 'none', + ); + $global_button_mobile_lang_direction_css['.woocommerce.mobile-columns-6 ul.products li.product:nth-child(6n), .woocommerce-page.mobile-columns-6 ul.products li.product:nth-child(6n), .woocommerce.mobile-columns-5 ul.products li.product:nth-child(5n), .woocommerce-page.mobile-columns-5 ul.products li.product:nth-child(5n), .woocommerce.mobile-columns-4 ul.products li.product:nth-child(4n), .woocommerce-page.mobile-columns-4 ul.products li.product:nth-child(4n), .woocommerce.mobile-columns-3 ul.products li.product:nth-child(3n), .woocommerce-page.mobile-columns-3 ul.products li.product:nth-child(3n), .woocommerce.mobile-columns-2 ul.products li.product:nth-child(2n), .woocommerce-page.mobile-columns-2 ul.products li.product:nth-child(2n), .woocommerce div.product .related.products ul.products li.product:nth-child(2n)'] = array( + 'margin-left' => 0, + 'clear' => 'left', + ); + $global_button_mobile_lang_direction_css['.woocommerce.mobile-columns-6 ul.products li.product:nth-child(6n+1), .woocommerce-page.mobile-columns-6 ul.products li.product:nth-child(6n+1), .woocommerce.mobile-columns-5 ul.products li.product:nth-child(5n+1), .woocommerce-page.mobile-columns-5 ul.products li.product:nth-child(5n+1), .woocommerce.mobile-columns-4 ul.products li.product:nth-child(4n+1), .woocommerce-page.mobile-columns-4 ul.products li.product:nth-child(4n+1), .woocommerce.mobile-columns-3 ul.products li.product:nth-child(3n+1), .woocommerce-page.mobile-columns-3 ul.products li.product:nth-child(3n+1), .woocommerce.mobile-columns-2 ul.products li.product:nth-child(2n+1), .woocommerce-page.mobile-columns-2 ul.products li.product:nth-child(2n+1), .woocommerce div.product .related.products ul.products li.product:nth-child(2n+1)'] = array( + 'clear' => 'right', + ); + } + } else { + $global_button_mobile_lang_direction_css = array( + '.woocommerce[class*="columns-"].columns-3 > ul.products li.product, .woocommerce[class*="columns-"].columns-4 > ul.products li.product, .woocommerce[class*="columns-"].columns-5 > ul.products li.product, .woocommerce[class*="columns-"].columns-6 > ul.products li.product' => array( + 'width' => '46.1%', + 'width' => 'calc(50% - 10px)', + 'margin-right' => '20px', + ), + '.woocommerce ul.products a.button.loading::after, .woocommerce-page ul.products a.button.loading::after' => array( + 'display' => 'inline-block', + 'margin-left' => '5px', + 'position' => 'initial', + ), + '.woocommerce.mobile-columns-1 .site-main ul.products li.product:nth-child(n), .woocommerce-page.mobile-columns-1 .site-main ul.products li.product:nth-child(n)' => array( + 'margin-right' => 0, + ), + '.woocommerce #content div.product .woocommerce-tabs ul.tabs li, .woocommerce-page #content div.product .woocommerce-tabs ul.tabs li' => array( + 'display' => 'block', + 'margin-right' => 0, + ), + ); + + if ( ! Astra_Builder_Helper::apply_flex_based_css() ) { + $global_button_mobile_lang_direction_css['.woocommerce[class*="columns-"] ul.products li.product:nth-child(n), .woocommerce-page[class*="columns-"] ul.products li.product:nth-child(n)'] = array( + 'margin-right' => '20px', + 'clear' => 'none', + ); + $global_button_mobile_lang_direction_css['.woocommerce-page[class*=columns-].columns-3>ul.products li.product:nth-child(2n), .woocommerce-page[class*=columns-].columns-4>ul.products li.product:nth-child(2n), .woocommerce-page[class*=columns-].columns-5>ul.products li.product:nth-child(2n), .woocommerce-page[class*=columns-].columns-6>ul.products li.product:nth-child(2n), .woocommerce[class*=columns-].columns-3>ul.products li.product:nth-child(2n), .woocommerce[class*=columns-].columns-4>ul.products li.product:nth-child(2n), .woocommerce[class*=columns-].columns-5>ul.products li.product:nth-child(2n), .woocommerce[class*=columns-].columns-6>ul.products li.product:nth-child(2n)'] = array( + 'margin-right' => 0, + 'clear' => 'right', + ); + $global_button_mobile_lang_direction_css['.woocommerce[class*="columns-"].columns-3 > ul.products li.product:nth-child(2n+1), .woocommerce[class*="columns-"].columns-4 > ul.products li.product:nth-child(2n+1), .woocommerce[class*="columns-"].columns-5 > ul.products li.product:nth-child(2n+1), .woocommerce[class*="columns-"].columns-6 > ul.products li.product:nth-child(2n+1)'] = array( + 'clear' => 'left', + ); + $global_button_mobile_lang_direction_css['.woocommerce-page[class*=columns-] ul.products li.product:nth-child(n), .woocommerce[class*=columns-] ul.products li.product:nth-child(n)'] = array( + 'margin-right' => '20px', + 'clear' => 'none', + ); + $global_button_mobile_lang_direction_css['.woocommerce.mobile-columns-6 ul.products li.product:nth-child(6n), .woocommerce-page.mobile-columns-6 ul.products li.product:nth-child(6n), .woocommerce.mobile-columns-5 ul.products li.product:nth-child(5n), .woocommerce-page.mobile-columns-5 ul.products li.product:nth-child(5n), .woocommerce.mobile-columns-4 ul.products li.product:nth-child(4n), .woocommerce-page.mobile-columns-4 ul.products li.product:nth-child(4n), .woocommerce.mobile-columns-3 ul.products li.product:nth-child(3n), .woocommerce-page.mobile-columns-3 ul.products li.product:nth-child(3n), .woocommerce.mobile-columns-2 ul.products li.product:nth-child(2n), .woocommerce-page.mobile-columns-2 ul.products li.product:nth-child(2n), .woocommerce div.product .related.products ul.products li.product:nth-child(2n)'] = array( + 'margin-right' => 0, + 'clear' => 'right', + ); + $global_button_mobile_lang_direction_css['.woocommerce.mobile-columns-6 ul.products li.product:nth-child(6n+1), .woocommerce-page.mobile-columns-6 ul.products li.product:nth-child(6n+1), .woocommerce.mobile-columns-5 ul.products li.product:nth-child(5n+1), .woocommerce-page.mobile-columns-5 ul.products li.product:nth-child(5n+1), .woocommerce.mobile-columns-4 ul.products li.product:nth-child(4n+1), .woocommerce-page.mobile-columns-4 ul.products li.product:nth-child(4n+1), .woocommerce.mobile-columns-3 ul.products li.product:nth-child(3n+1), .woocommerce-page.mobile-columns-3 ul.products li.product:nth-child(3n+1), .woocommerce.mobile-columns-2 ul.products li.product:nth-child(2n+1), .woocommerce-page.mobile-columns-2 ul.products li.product:nth-child(2n+1), .woocommerce div.product .related.products ul.products li.product:nth-child(2n+1)'] = array( + 'clear' => 'left', + ); + } + } + + $css_output .= astra_parse_css( $global_button_mobile_lang_direction_css, '', astra_get_mobile_breakpoint() ); + + if ( 'page-builder' !== astra_get_content_layout() ) { + /* Woocommerce Shop Archive width */ + if ( 'custom' === $woo_shop_archive_width ) : + // Woocommerce shop archive custom width. + $site_width = array( + '.ast-woo-shop-archive .site-content > .ast-container' => array( + 'max-width' => astra_get_css_value( $woo_shop_archive_max_width, 'px' ), + ), + ); + $css_output .= astra_parse_css( $site_width, astra_get_tablet_breakpoint( '', 1 ) ); + + else : + // Woocommerce shop archive default width. + $site_width = array( + '.ast-woo-shop-archive .site-content > .ast-container' => array( + 'max-width' => astra_get_css_value( $site_content_width + 40, 'px' ), + ), + ); + + /* Parse CSS from array()*/ + $css_output .= astra_parse_css( $site_width, astra_get_tablet_breakpoint( '', 1 ) ); + endif; + } + + $woo_product_css = array( + '.woocommerce #content .ast-woocommerce-container div.product div.images, .woocommerce .ast-woocommerce-container div.product div.images, .woocommerce-page #content .ast-woocommerce-container div.product div.images, .woocommerce-page .ast-woocommerce-container div.product div.images' => array( + 'width' => '50%', + ), + '.woocommerce #content .ast-woocommerce-container div.product div.summary, .woocommerce .ast-woocommerce-container div.product div.summary, .woocommerce-page #content .ast-woocommerce-container div.product div.summary, .woocommerce-page .ast-woocommerce-container div.product div.summary' => array( + 'width' => '46%', + ), + '.woocommerce.woocommerce-checkout form #customer_details.col2-set .col-1, .woocommerce.woocommerce-checkout form #customer_details.col2-set .col-2, .woocommerce-page.woocommerce-checkout form #customer_details.col2-set .col-1, .woocommerce-page.woocommerce-checkout form #customer_details.col2-set .col-2' => array( + 'float' => 'none', + 'width' => 'auto', + ), + ); + + /* Parse CSS from array()*/ + $css_output .= astra_parse_css( $woo_product_css, astra_get_tablet_breakpoint( '', 1 ) ); + + /* + * global button settings not working for woocommerce button on shop and single page. + * check if the current user is existing user or new user. + * if new user load the CSS bty default if existing provide a filter + */ + if ( self::astra_global_btn_woo_comp() ) { + + $woo_global_button_css = array( + '.woocommerce a.button , .woocommerce button.button.alt ,.woocommerce-page table.cart td.actions .button, .woocommerce-page #content table.cart td.actions .button , .woocommerce a.button.alt ,.woocommerce .woocommerce-message a.button , .ast-site-header-cart .widget_shopping_cart .buttons .button.checkout, .woocommerce button.button.alt.disabled , .wc-block-grid__products .wc-block-grid__product .wp-block-button__link ' => array( + 'border' => 'solid', + 'border-top-width' => ( isset( $global_custom_button_border_size['top'] ) && '' !== $global_custom_button_border_size['top'] ) ? astra_get_css_value( $global_custom_button_border_size['top'], 'px' ) : '0', + 'border-right-width' => ( isset( $global_custom_button_border_size['right'] ) && '' !== $global_custom_button_border_size['right'] ) ? astra_get_css_value( $global_custom_button_border_size['right'], 'px' ) : '0', + 'border-left-width' => ( isset( $global_custom_button_border_size['left'] ) && '' !== $global_custom_button_border_size['left'] ) ? astra_get_css_value( $global_custom_button_border_size['left'], 'px' ) : '0', + 'border-bottom-width' => ( isset( $global_custom_button_border_size['bottom'] ) && '' !== $global_custom_button_border_size['bottom'] ) ? astra_get_css_value( $global_custom_button_border_size['bottom'], 'px' ) : '0', + 'border-color' => $btn_border_color ? $btn_border_color : $btn_bg_color, + ), + '.woocommerce a.button:hover , .woocommerce button.button.alt:hover , .woocommerce-page table.cart td.actions .button:hover, .woocommerce-page #content table.cart td.actions .button:hover, .woocommerce a.button.alt:hover ,.woocommerce .woocommerce-message a.button:hover , .ast-site-header-cart .widget_shopping_cart .buttons .button.checkout:hover , .woocommerce button.button.alt.disabled:hover , .wc-block-grid__products .wc-block-grid__product .wp-block-button__link:hover' => array( + 'border-color' => $btn_border_h_color ? $btn_border_h_color : $btn_bg_h_color, + ), + ); + + $css_output .= astra_parse_css( $woo_global_button_css ); + } + + if ( ! is_shop() && ! is_product() ) { + + $css_output .= astra_parse_css( + array( + '.widget_product_search button' => array( + 'flex' => '0 0 auto', + 'padding' => '10px 20px;', + ), + ) + ); + } + + if ( $is_site_rtl ) { + $woo_product_lang_direction_css = array( + '.woocommerce.woocommerce-checkout form #customer_details.col2-set, .woocommerce-page.woocommerce-checkout form #customer_details.col2-set' => array( + 'width' => '55%', + 'float' => 'right', + 'margin-left' => '4.347826087%', + ), + '.woocommerce.woocommerce-checkout form #order_review, .woocommerce.woocommerce-checkout form #order_review_heading, .woocommerce-page.woocommerce-checkout form #order_review, .woocommerce-page.woocommerce-checkout form #order_review_heading' => array( + 'width' => '40%', + 'float' => 'left', + 'margin-left' => '0', + 'clear' => 'left', + ), + ); + } else { + $woo_product_lang_direction_css = array( + '.woocommerce.woocommerce-checkout form #customer_details.col2-set, .woocommerce-page.woocommerce-checkout form #customer_details.col2-set' => array( + 'width' => '55%', + 'float' => 'left', + 'margin-right' => '4.347826087%', + ), + '.woocommerce.woocommerce-checkout form #order_review, .woocommerce.woocommerce-checkout form #order_review_heading, .woocommerce-page.woocommerce-checkout form #order_review, .woocommerce-page.woocommerce-checkout form #order_review_heading' => array( + 'width' => '40%', + 'float' => 'right', + 'margin-right' => '0', + 'clear' => 'right', + ), + ); + } + + /* Parse CSS from array()*/ + $css_output .= astra_parse_css( $woo_product_lang_direction_css, astra_get_tablet_breakpoint( '', 1 ) ); + + wp_add_inline_style( 'woocommerce-general', apply_filters( 'astra_theme_woocommerce_dynamic_css', $css_output ) ); + + /** + * YITH WooCommerce Wishlist Style + */ + $yith_wcwl_main_style = array( + '.yes-js.js_active .ast-plain-container.ast-single-post #primary' => array( + 'margin' => esc_attr( '4em 0' ), + ), + '.js_active .ast-plain-container.ast-single-post .entry-header' => array( + 'margin-top' => esc_attr( '0' ), + ), + '.woocommerce table.wishlist_table' => array( + 'font-size' => esc_attr( '100%' ), + ), + '.woocommerce table.wishlist_table tbody td.product-name' => array( + 'font-weight' => esc_attr( '700' ), + ), + '.woocommerce table.wishlist_table thead th' => array( + 'border-top' => esc_attr( '0' ), + ), + '.woocommerce table.wishlist_table tr td.product-remove' => array( + 'padding' => esc_attr( '.7em 1em' ), + ), + '.woocommerce table.wishlist_table tbody td' => array( + 'border-right' => esc_attr( '0' ), + ), + '.woocommerce .wishlist_table td.product-add-to-cart a' => array( + 'display' => esc_attr( 'inherit !important' ), + ), + '.wishlist_table tr td, .wishlist_table tr th.wishlist-delete, .wishlist_table tr th.product-checkbox' => array( + 'text-align' => esc_attr( 'left' ), + ), + '.woocommerce #content table.wishlist_table.cart a.remove' => array( + 'display' => esc_attr( 'inline-block' ), + 'vertical-align' => esc_attr( 'middle' ), + 'font-size' => esc_attr( '18px' ), + 'font-weight' => esc_attr( 'normal' ), + 'width' => esc_attr( '24px' ), + 'height' => esc_attr( '24px' ), + 'line-height' => esc_attr( '21px' ), + 'color' => esc_attr( '#ccc !important' ), + 'text-align' => esc_attr( 'center' ), + 'border' => esc_attr( '1px solid #ccc' ), + ), + '.woocommerce #content table.wishlist_table.cart a.remove:hover' => array( + 'color' => esc_attr( $link_color . '!important' ), + 'border-color' => esc_attr( $link_color ), + 'background-color' => esc_attr( '#ffffff' ), + ), + ); + /* Parse CSS from array() */ + $yith_wcwl_main_style = astra_parse_css( $yith_wcwl_main_style ); + + $yith_wcwl_main_style_small = array( + '.yes-js.js_active .ast-plain-container.ast-single-post #primary' => array( + 'padding' => esc_attr( '1.5em 0' ), + 'margin' => esc_attr( '0' ), + ), + ); + /* Parse CSS from array()*/ + $yith_wcwl_main_style .= astra_parse_css( $yith_wcwl_main_style_small, '', astra_get_tablet_breakpoint() ); + + wp_add_inline_style( 'yith-wcwl-main', $yith_wcwl_main_style ); + } + + /** + * Register Customizer sections and panel for woocommerce + * + * @since 1.0.0 + * @param WP_Customize_Manager $wp_customize Theme Customizer object. + */ + public function customize_register( $wp_customize ) { + + // @codingStandardsIgnoreStart WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound + /** + * Register Sections & Panels + */ + require ASTRA_THEME_DIR . 'inc/compatibility/woocommerce/customizer/class-astra-customizer-register-woo-section.php'; + + /** + * Sections + */ + require ASTRA_THEME_DIR . 'inc/compatibility/woocommerce/customizer/sections/class-astra-woo-shop-container-configs.php'; + require ASTRA_THEME_DIR . 'inc/compatibility/woocommerce/customizer/sections/class-astra-woo-shop-sidebar-configs.php'; + require ASTRA_THEME_DIR . 'inc/compatibility/woocommerce/customizer/sections/layout/class-astra-woo-shop-layout-configs.php'; + require ASTRA_THEME_DIR . 'inc/compatibility/woocommerce/customizer/sections/layout/class-astra-woo-shop-single-layout-configs.php'; + require ASTRA_THEME_DIR . 'inc/compatibility/woocommerce/customizer/sections/layout/class-astra-woo-shop-cart-layout-configs.php'; + // @codingStandardsIgnoreEnd WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound + + } + + /** + * Add Cart icon markup + * + * @param String $output Markup. + * @param String $section Section name. + * @param String $section_type Section selected option. + * @return Markup String. + * + * @since 1.0.0 + */ + public function astra_header_cart( $output, $section, $section_type ) { + + if ( 'woocommerce' === $section_type && apply_filters( 'astra_woo_header_cart_icon', true ) ) { + + $output = $this->woo_mini_cart_markup(); + } + + return $output; + } + + /** + * Woocommerce mini cart markup markup + * + * @since 1.2.2 + * @return html + */ + public function woo_mini_cart_markup() { + + if ( is_cart() ) { + $class = 'current-menu-item'; + } else { + $class = ''; + } + + $cart_menu_classes = apply_filters( 'astra_cart_in_menu_class', array( 'ast-menu-cart-with-border' ) ); + + ob_start(); + if ( is_customize_preview() && true === Astra_Builder_Helper::$is_header_footer_builder_active ) { + Astra_Builder_UI_Controller::render_customizer_edit_button(); + } + ?> + <div id="ast-site-header-cart" class="ast-site-header-cart <?php echo esc_attr( implode( ' ', $cart_menu_classes ) ); ?>"> + <div class="ast-site-header-cart-li <?php echo esc_attr( $class ); ?>"> + <?php $this->astra_get_cart_link(); ?> + </div> + <div class="ast-site-header-cart-data"> + <?php the_widget( 'WC_Widget_Cart', 'title=' ); ?> + </div> + </div> + <?php + return ob_get_clean(); + } + + /** + * Add Cart icon markup + * + * @param Array $options header options array. + * + * @return Array header options array. + * @since 1.0.0 + */ + public function header_section_elements( $options ) { + + $options['woocommerce'] = 'WooCommerce'; + + return $options; + } + + /** + * Cart Link + * Displayed a link to the cart including the number of items present and the cart total + * + * @return void + * @since 1.0.0 + */ + public function astra_get_cart_link() { + + $view_shopping_cart = apply_filters( 'astra_woo_view_shopping_cart_title', __( 'View your shopping cart', 'astra' ) ); + + $woo_cart_link = wc_get_cart_url(); + + if ( is_customize_preview() ) { + $woo_cart_link = '#'; + } + ?> + <a class="cart-container" href="<?php echo esc_url( $woo_cart_link ); ?>" title="<?php echo esc_attr( $view_shopping_cart ); ?>"> + + <?php + do_action( 'astra_woo_header_cart_icons_before' ); + + if ( apply_filters( 'astra_woo_default_header_cart_icon', true ) ) { + ?> + <div class="ast-cart-menu-wrap"> + <span class="count"> + <?php + if ( apply_filters( 'astra_woo_header_cart_total', true ) && null != WC()->cart ) { + echo WC()->cart->get_cart_contents_count(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + ?> + </span> + </div> + <?php + } + + do_action( 'astra_woo_header_cart_icons_after' ); + + ?> + </a> + <?php + } + + /** + * Cart Fragments + * Ensure cart contents update when products are added to the cart via AJAX + * + * @param array $fragments Fragments to refresh via AJAX. + * @return array Fragments to refresh via AJAX + */ + public function cart_link_fragment( $fragments ) { + + ob_start(); + $this->astra_get_cart_link(); + $fragments['a.cart-container'] = ob_get_clean(); + + return $fragments; + } + + /** + * For existing users, do not load the wide/full width image CSS by default. + * + * @since 2.5.0 + * @return boolean false if it is an existing user , true if not. + */ + public static function astra_global_btn_woo_comp() { + $astra_settings = get_option( ASTRA_THEME_SETTINGS ); + $astra_settings['global-btn-woo-css'] = isset( $astra_settings['global-btn-woo-css'] ) ? false : true; + return apply_filters( 'astra_global_btn_woo_comp', $astra_settings['global-btn-woo-css'] ); + } + } + +endif; + +if ( apply_filters( 'astra_enable_woocommerce_integration', true ) ) { + Astra_Woocommerce::get_instance(); +} diff --git a/inc/compatibility/woocommerce/customizer/class-astra-customizer-register-woo-section.php b/inc/compatibility/woocommerce/customizer/class-astra-customizer-register-woo-section.php index e075ba1..fe6df52 100644 --- a/inc/compatibility/woocommerce/customizer/class-astra-customizer-register-woo-section.php +++ b/inc/compatibility/woocommerce/customizer/class-astra-customizer-register-woo-section.php @@ -1,74 +1,74 @@ -<?php
-/**
- * Register customizer panels & sections fro Woocommerce.
- *
- * @package Astra
- * @author Astra
- * @copyright Copyright (c) 2020, Astra
- * @link https://wpastra.com/
- * @since Astra 1.1.0
- * @since 1.4.6 Chnaged to using Astra_Customizer API
- */
-
-if ( ! defined( 'ABSPATH' ) ) {
- exit; // Exit if accessed directly.
-}
-
-if ( ! class_exists( 'Astra_Customizer_Register_Woo_Section' ) ) {
-
- /**
- * Customizer Sanitizes Initial setup
- */
- class Astra_Customizer_Register_Woo_Section extends Astra_Customizer_Config_Base {
-
- /**
- * Register Panels and Sections for Customizer.
- *
- * @param Array $configurations Astra Customizer Configurations.
- * @param WP_Customize_Manager $wp_customize instance of WP_Customize_Manager.
- * @since 1.4.3
- * @return Array Astra Customizer Configurations with updated configurations.
- */
- public function register_configuration( $configurations, $wp_customize ) {
-
- $configs = array(
-
- array(
- 'name' => 'section-woo-general',
- 'title' => __( 'General', 'astra' ),
- 'type' => 'section',
- 'priority' => 10,
- 'panel' => 'woocommerce',
- ),
- array(
- 'name' => 'section-woo-shop',
- 'title' => __( 'Shop', 'astra' ),
- 'type' => 'section',
- 'priority' => 20,
- 'panel' => 'woocommerce',
- ),
-
- array(
- 'name' => 'section-woo-shop-single',
- 'type' => 'section',
- 'title' => __( 'Single Product', 'astra' ),
- 'priority' => 12,
- 'panel' => 'woocommerce',
- ),
-
- array(
- 'name' => 'section-woo-shop-cart',
- 'type' => 'section',
- 'title' => __( 'Cart', 'astra' ),
- 'priority' => 20,
- 'panel' => 'woocommerce',
- ),
- );
-
- return array_merge( $configurations, $configs );
- }
- }
-}
-
-
-new Astra_Customizer_Register_Woo_Section();
+<?php +/** + * Register customizer panels & sections fro Woocommerce. + * + * @package Astra + * @author Astra + * @copyright Copyright (c) 2020, Astra + * @link https://wpastra.com/ + * @since Astra 1.1.0 + * @since 1.4.6 Chnaged to using Astra_Customizer API + */ + +if ( ! defined( 'ABSPATH' ) ) { + exit; // Exit if accessed directly. +} + +if ( ! class_exists( 'Astra_Customizer_Register_Woo_Section' ) ) { + + /** + * Customizer Sanitizes Initial setup + */ + class Astra_Customizer_Register_Woo_Section extends Astra_Customizer_Config_Base { + + /** + * Register Panels and Sections for Customizer. + * + * @param Array $configurations Astra Customizer Configurations. + * @param WP_Customize_Manager $wp_customize instance of WP_Customize_Manager. + * @since 1.4.3 + * @return Array Astra Customizer Configurations with updated configurations. + */ + public function register_configuration( $configurations, $wp_customize ) { + + $configs = array( + + array( + 'name' => 'section-woo-general', + 'title' => __( 'General', 'astra' ), + 'type' => 'section', + 'priority' => 10, + 'panel' => 'woocommerce', + ), + array( + 'name' => 'section-woo-shop', + 'title' => __( 'Shop', 'astra' ), + 'type' => 'section', + 'priority' => 20, + 'panel' => 'woocommerce', + ), + + array( + 'name' => 'section-woo-shop-single', + 'type' => 'section', + 'title' => __( 'Single Product', 'astra' ), + 'priority' => 12, + 'panel' => 'woocommerce', + ), + + array( + 'name' => 'section-woo-shop-cart', + 'type' => 'section', + 'title' => __( 'Cart', 'astra' ), + 'priority' => 20, + 'panel' => 'woocommerce', + ), + ); + + return array_merge( $configurations, $configs ); + } + } +} + + +new Astra_Customizer_Register_Woo_Section(); diff --git a/inc/compatibility/woocommerce/customizer/sections/class-astra-woo-shop-container-configs.php b/inc/compatibility/woocommerce/customizer/sections/class-astra-woo-shop-container-configs.php index a24d642..f82ded9 100644 --- a/inc/compatibility/woocommerce/customizer/sections/class-astra-woo-shop-container-configs.php +++ b/inc/compatibility/woocommerce/customizer/sections/class-astra-woo-shop-container-configs.php @@ -1,64 +1,64 @@ -<?php
-/**
- * Container Options for Astra theme.
- *
- * @package Astra
- * @author Brainstorm Force
- * @copyright Copyright (c) 2020, Brainstorm Force
- * @link https://www.brainstormforce.com
- * @since Astra 1.0
- */
-
-if ( ! defined( 'ABSPATH' ) ) {
- exit;
-}
-
-if ( ! class_exists( 'Astra_Woo_Shop_Container_Configs' ) ) {
-
- /**
- * Customizer Sanitizes Initial setup
- */
- class Astra_Woo_Shop_Container_Configs extends Astra_Customizer_Config_Base {
-
- /**
- * Register Astra-WooCommerce Shop Container Settings.
- *
- * @param Array $configurations Astra Customizer Configurations.
- * @param WP_Customize_Manager $wp_customize instance of WP_Customize_Manager.
- * @since 1.4.3
- * @return Array Astra Customizer Configurations with updated configurations.
- */
- public function register_configuration( $configurations, $wp_customize ) {
-
- $_configs = array(
-
- /**
- * Option: Shop Page
- */
- array(
- 'name' => ASTRA_THEME_SETTINGS . '[woocommerce-content-layout]',
- 'type' => 'control',
- 'control' => 'ast-select',
- 'default' => astra_get_option( 'woocommerce-content-layout' ),
- 'section' => 'section-container-layout',
- 'priority' => 85,
- 'title' => __( 'WooCommerce Layout', 'astra' ),
- 'divider' => array( 'ast_class' => 'ast-top-divider' ),
- 'choices' => array(
- 'default' => __( 'Default', 'astra' ),
- 'boxed-container' => __( 'Boxed', 'astra' ),
- 'content-boxed-container' => __( 'Content Boxed', 'astra' ),
- 'plain-container' => __( 'Full Width / Contained', 'astra' ),
- 'page-builder' => __( 'Full Width / Stretched', 'astra' ),
- ),
- ),
- );
-
- return array_merge( $configurations, $_configs );
-
- }
- }
-}
-
-new Astra_Woo_Shop_Container_Configs();
-
+<?php +/** + * Container Options for Astra theme. + * + * @package Astra + * @author Brainstorm Force + * @copyright Copyright (c) 2020, Brainstorm Force + * @link https://www.brainstormforce.com + * @since Astra 1.0 + */ + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( 'Astra_Woo_Shop_Container_Configs' ) ) { + + /** + * Customizer Sanitizes Initial setup + */ + class Astra_Woo_Shop_Container_Configs extends Astra_Customizer_Config_Base { + + /** + * Register Astra-WooCommerce Shop Container Settings. + * + * @param Array $configurations Astra Customizer Configurations. + * @param WP_Customize_Manager $wp_customize instance of WP_Customize_Manager. + * @since 1.4.3 + * @return Array Astra Customizer Configurations with updated configurations. + */ + public function register_configuration( $configurations, $wp_customize ) { + + $_configs = array( + + /** + * Option: Shop Page + */ + array( + 'name' => ASTRA_THEME_SETTINGS . '[woocommerce-content-layout]', + 'type' => 'control', + 'control' => 'ast-select', + 'default' => astra_get_option( 'woocommerce-content-layout' ), + 'section' => 'section-container-layout', + 'priority' => 85, + 'title' => __( 'WooCommerce Layout', 'astra' ), + 'divider' => array( 'ast_class' => 'ast-top-divider' ), + 'choices' => array( + 'default' => __( 'Default', 'astra' ), + 'boxed-container' => __( 'Boxed', 'astra' ), + 'content-boxed-container' => __( 'Content Boxed', 'astra' ), + 'plain-container' => __( 'Full Width / Contained', 'astra' ), + 'page-builder' => __( 'Full Width / Stretched', 'astra' ), + ), + ), + ); + + return array_merge( $configurations, $_configs ); + + } + } +} + +new Astra_Woo_Shop_Container_Configs(); + diff --git a/inc/compatibility/woocommerce/customizer/sections/class-astra-woo-shop-sidebar-configs.php b/inc/compatibility/woocommerce/customizer/sections/class-astra-woo-shop-sidebar-configs.php index 6534163..57f7ded 100644 --- a/inc/compatibility/woocommerce/customizer/sections/class-astra-woo-shop-sidebar-configs.php +++ b/inc/compatibility/woocommerce/customizer/sections/class-astra-woo-shop-sidebar-configs.php @@ -1,84 +1,84 @@ -<?php
-/**
- * Content Spacing Options for our theme.
- *
- * @package Astra
- * @author Brainstorm Force
- * @copyright Copyright (c) 2020, Brainstorm Force
- * @link https://www.brainstormforce.com
- * @since Astra 1.0
- */
-
-if ( ! defined( 'ABSPATH' ) ) {
- exit;
-}
-
-if ( ! class_exists( 'Astra_Woo_Shop_Sidebar_Configs' ) ) {
-
- /**
- * Customizer Sanitizes Initial setup
- */
- class Astra_Woo_Shop_Sidebar_Configs extends Astra_Customizer_Config_Base {
-
- /**
- * Register Astra-WooCommerce Shop Sidebar Configurations.
- *
- * @param Array $configurations Astra Customizer Configurations.
- * @param WP_Customize_Manager $wp_customize instance of WP_Customize_Manager.
- * @since 1.4.3
- * @return Array Astra Customizer Configurations with updated configurations.
- */
- public function register_configuration( $configurations, $wp_customize ) {
-
- $_configs = array(
-
- /**
- * Option: Shop Page
- */
- array(
- 'name' => ASTRA_THEME_SETTINGS . '[woocommerce-sidebar-layout]',
- 'type' => 'control',
- 'control' => 'ast-select',
- 'section' => 'section-sidebars',
- 'default' => astra_get_option( 'woocommerce-sidebar-layout' ),
- 'priority' => 5,
- 'title' => __( 'WooCommerce', 'astra' ),
- 'choices' => array(
- 'default' => __( 'Default', 'astra' ),
- 'no-sidebar' => __( 'No Sidebar', 'astra' ),
- 'left-sidebar' => __( 'Left Sidebar', 'astra' ),
- 'right-sidebar' => __( 'Right Sidebar', 'astra' ),
- ),
- ),
-
- /**
- * Option: Single Product
- */
- array(
- 'name' => ASTRA_THEME_SETTINGS . '[single-product-sidebar-layout]',
- 'type' => 'control',
- 'control' => 'ast-select',
- 'default' => astra_get_option( 'single-product-sidebar-layout' ),
- 'section' => 'section-sidebars',
- 'priority' => 5,
- 'title' => __( 'Single Product', 'astra' ),
- 'choices' => array(
- 'default' => __( 'Default', 'astra' ),
- 'no-sidebar' => __( 'No Sidebar', 'astra' ),
- 'left-sidebar' => __( 'Left Sidebar', 'astra' ),
- 'right-sidebar' => __( 'Right Sidebar', 'astra' ),
- ),
- 'divider' => array( 'ast_class' => 'ast-bottom-divider' ),
- ),
- );
-
- return array_merge( $configurations, $_configs );
-
- }
- }
-}
-
-new Astra_Woo_Shop_Sidebar_Configs();
-
-
-
+<?php +/** + * Content Spacing Options for our theme. + * + * @package Astra + * @author Brainstorm Force + * @copyright Copyright (c) 2020, Brainstorm Force + * @link https://www.brainstormforce.com + * @since Astra 1.0 + */ + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( 'Astra_Woo_Shop_Sidebar_Configs' ) ) { + + /** + * Customizer Sanitizes Initial setup + */ + class Astra_Woo_Shop_Sidebar_Configs extends Astra_Customizer_Config_Base { + + /** + * Register Astra-WooCommerce Shop Sidebar Configurations. + * + * @param Array $configurations Astra Customizer Configurations. + * @param WP_Customize_Manager $wp_customize instance of WP_Customize_Manager. + * @since 1.4.3 + * @return Array Astra Customizer Configurations with updated configurations. + */ + public function register_configuration( $configurations, $wp_customize ) { + + $_configs = array( + + /** + * Option: Shop Page + */ + array( + 'name' => ASTRA_THEME_SETTINGS . '[woocommerce-sidebar-layout]', + 'type' => 'control', + 'control' => 'ast-select', + 'section' => 'section-sidebars', + 'default' => astra_get_option( 'woocommerce-sidebar-layout' ), + 'priority' => 5, + 'title' => __( 'WooCommerce', 'astra' ), + 'choices' => array( + 'default' => __( 'Default', 'astra' ), + 'no-sidebar' => __( 'No Sidebar', 'astra' ), + 'left-sidebar' => __( 'Left Sidebar', 'astra' ), + 'right-sidebar' => __( 'Right Sidebar', 'astra' ), + ), + ), + + /** + * Option: Single Product + */ + array( + 'name' => ASTRA_THEME_SETTINGS . '[single-product-sidebar-layout]', + 'type' => 'control', + 'control' => 'ast-select', + 'default' => astra_get_option( 'single-product-sidebar-layout' ), + 'section' => 'section-sidebars', + 'priority' => 5, + 'title' => __( 'Single Product', 'astra' ), + 'choices' => array( + 'default' => __( 'Default', 'astra' ), + 'no-sidebar' => __( 'No Sidebar', 'astra' ), + 'left-sidebar' => __( 'Left Sidebar', 'astra' ), + 'right-sidebar' => __( 'Right Sidebar', 'astra' ), + ), + 'divider' => array( 'ast_class' => 'ast-bottom-divider' ), + ), + ); + + return array_merge( $configurations, $_configs ); + + } + } +} + +new Astra_Woo_Shop_Sidebar_Configs(); + + + diff --git a/inc/compatibility/woocommerce/customizer/sections/layout/class-astra-woo-shop-cart-layout-configs.php b/inc/compatibility/woocommerce/customizer/sections/layout/class-astra-woo-shop-cart-layout-configs.php index 6c36a4f..694eb17 100644 --- a/inc/compatibility/woocommerce/customizer/sections/layout/class-astra-woo-shop-cart-layout-configs.php +++ b/inc/compatibility/woocommerce/customizer/sections/layout/class-astra-woo-shop-cart-layout-configs.php @@ -1,57 +1,57 @@ -<?php
-/**
- * WooCommerce Options for Astra Theme.
- *
- * @package Astra
- * @author Astra
- * @copyright Copyright (c) 2020, Astra
- * @link https://wpastra.com/
- * @since Astra 1.1.0
- */
-
-if ( ! defined( 'ABSPATH' ) ) {
- exit;
-}
-
-if ( ! class_exists( 'Astra_Woo_Shop_Cart_Layout_Configs' ) ) {
-
-
- /**
- * Customizer Sanitizes Initial setup
- */
- class Astra_Woo_Shop_Cart_Layout_Configs extends Astra_Customizer_Config_Base {
-
- /**
- * Register Astra-WooCommerce Shop Cart Layout Customizer Configurations.
- *
- * @param Array $configurations Astra Customizer Configurations.
- * @param WP_Customize_Manager $wp_customize instance of WP_Customize_Manager.
- * @since 1.4.3
- * @return Array Astra Customizer Configurations with updated configurations.
- */
- public function register_configuration( $configurations, $wp_customize ) {
-
- $_configs = array(
-
- /**
- * Option: Cart upsells
- *
- * Enable Cross-sells - in the code it is refrenced as upsells rather than cross-sells.
- */
- array(
- 'name' => ASTRA_THEME_SETTINGS . '[enable-cart-upsells]',
- 'section' => 'section-woo-shop-cart',
- 'type' => 'control',
- 'control' => 'ast-toggle-control',
- 'default' => astra_get_option( 'enable-cart-upsells' ),
- 'title' => __( 'Enable Cross-sells', 'astra' ),
- 'priority' => 10,
- ),
- );
-
- return array_merge( $configurations, $_configs );
- }
- }
-}
-
-new Astra_Woo_Shop_Cart_Layout_Configs();
+<?php +/** + * WooCommerce Options for Astra Theme. + * + * @package Astra + * @author Astra + * @copyright Copyright (c) 2020, Astra + * @link https://wpastra.com/ + * @since Astra 1.1.0 + */ + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( 'Astra_Woo_Shop_Cart_Layout_Configs' ) ) { + + + /** + * Customizer Sanitizes Initial setup + */ + class Astra_Woo_Shop_Cart_Layout_Configs extends Astra_Customizer_Config_Base { + + /** + * Register Astra-WooCommerce Shop Cart Layout Customizer Configurations. + * + * @param Array $configurations Astra Customizer Configurations. + * @param WP_Customize_Manager $wp_customize instance of WP_Customize_Manager. + * @since 1.4.3 + * @return Array Astra Customizer Configurations with updated configurations. + */ + public function register_configuration( $configurations, $wp_customize ) { + + $_configs = array( + + /** + * Option: Cart upsells + * + * Enable Cross-sells - in the code it is refrenced as upsells rather than cross-sells. + */ + array( + 'name' => ASTRA_THEME_SETTINGS . '[enable-cart-upsells]', + 'section' => 'section-woo-shop-cart', + 'type' => 'control', + 'control' => 'ast-toggle-control', + 'default' => astra_get_option( 'enable-cart-upsells' ), + 'title' => __( 'Enable Cross-sells', 'astra' ), + 'priority' => 10, + ), + ); + + return array_merge( $configurations, $_configs ); + } + } +} + +new Astra_Woo_Shop_Cart_Layout_Configs(); diff --git a/inc/compatibility/woocommerce/customizer/sections/layout/class-astra-woo-shop-layout-configs.php b/inc/compatibility/woocommerce/customizer/sections/layout/class-astra-woo-shop-layout-configs.php index 77a0981..c515172 100644 --- a/inc/compatibility/woocommerce/customizer/sections/layout/class-astra-woo-shop-layout-configs.php +++ b/inc/compatibility/woocommerce/customizer/sections/layout/class-astra-woo-shop-layout-configs.php @@ -1,158 +1,158 @@ -<?php
-/**
- * WooCommerce Options for Astra Theme.
- *
- * @package Astra
- * @author Astra
- * @copyright Copyright (c) 2020, Astra
- * @link https://wpastra.com/
- * @since Astra 1.1.0
- */
-
-if ( ! defined( 'ABSPATH' ) ) {
- exit;
-}
-
-if ( ! class_exists( 'Astra_Woo_Shop_Layout_Configs' ) ) {
-
- /**
- * Customizer Sanitizes Initial setup
- */
- class Astra_Woo_Shop_Layout_Configs extends Astra_Customizer_Config_Base {
-
- /**
- * Register Astra-WooCommerce Shop Layout Customizer Configurations.
- *
- * @param Array $configurations Astra Customizer Configurations.
- * @param WP_Customize_Manager $wp_customize instance of WP_Customize_Manager.
- * @since 1.4.3
- * @return Array Astra Customizer Configurations with updated configurations.
- */
- public function register_configuration( $configurations, $wp_customize ) {
-
- $_configs = array(
-
- /**
- * Option: Shop Columns
- */
- array(
- 'name' => ASTRA_THEME_SETTINGS . '[shop-grids]',
- 'type' => 'control',
- 'control' => 'ast-responsive-slider',
- 'sanitize_callback' => array( 'Astra_Customizer_Sanitizes', 'sanitize_responsive_slider' ),
- 'section' => 'woocommerce_product_catalog',
- 'default' => astra_get_option(
- 'shop-grids',
- array(
- 'desktop' => 4,
- 'tablet' => 3,
- 'mobile' => 2,
- )
- ),
- 'priority' => 11,
- 'title' => __( 'Shop Columns', 'astra' ),
- 'input_attrs' => array(
- 'step' => 1,
- 'min' => 1,
- 'max' => 6,
- ),
- ),
-
- /**
- * Option: Products Per Page
- */
- array(
- 'name' => ASTRA_THEME_SETTINGS . '[shop-no-of-products]',
- 'type' => 'control',
- 'section' => 'woocommerce_product_catalog',
- 'title' => __( 'Products Per Page', 'astra' ),
- 'default' => astra_get_option( 'shop-no-of-products' ),
- 'control' => 'number',
- 'priority' => 15,
- 'input_attrs' => array(
- 'min' => 1,
- 'step' => 1,
- 'max' => 100,
- ),
- ),
-
- /**
- * Option: Single Post Meta
- */
- array(
- 'name' => ASTRA_THEME_SETTINGS . '[shop-product-structure]',
- 'type' => 'control',
- 'control' => 'ast-sortable',
- 'sanitize_callback' => array( 'Astra_Customizer_Sanitizes', 'sanitize_multi_choices' ),
- 'section' => 'woocommerce_product_catalog',
- 'default' => astra_get_option( 'shop-product-structure' ),
- 'priority' => 15,
- 'title' => __( 'Shop Product Structure', 'astra' ),
- 'choices' => array(
- 'title' => __( 'Title', 'astra' ),
- 'price' => __( 'Price', 'astra' ),
- 'ratings' => __( 'Ratings', 'astra' ),
- 'short_desc' => __( 'Short Description', 'astra' ),
- 'add_cart' => __( 'Add To Cart', 'astra' ),
- 'category' => __( 'Category', 'astra' ),
- ),
- ),
-
- /**
- * Option: Shop Archive Content Width
- */
- array(
- 'name' => ASTRA_THEME_SETTINGS . '[shop-archive-width]',
- 'type' => 'control',
- 'control' => 'ast-select',
- 'section' => 'woocommerce_product_catalog',
- 'default' => astra_get_option( 'shop-archive-width' ),
- 'priority' => 10,
- 'title' => __( 'Shop Archive Content Width', 'astra' ),
- 'choices' => array(
- 'default' => __( 'Default', 'astra' ),
- 'custom' => __( 'Custom', 'astra' ),
- ),
- 'divider' => array( 'ast_class' => 'ast-bottom-divider' ),
- ),
-
- /**
- * Option: Enter Width
- */
- array(
- 'name' => ASTRA_THEME_SETTINGS . '[shop-archive-max-width]',
- 'type' => 'control',
- 'control' => 'ast-slider',
- 'section' => 'woocommerce_product_catalog',
- 'default' => astra_get_option( 'shop-archive-max-width' ),
- 'priority' => 10,
- 'title' => __( 'Custom Width', 'astra' ),
- 'transport' => 'postMessage',
- 'suffix' => 'px',
- 'input_attrs' => array(
- 'min' => 768,
- 'step' => 1,
- 'max' => 1920,
- ),
- 'divider' => array( 'ast_class' => 'ast-bottom-divider' ),
- 'context' => array(
- Astra_Builder_Helper::$general_tab_config,
- array(
- 'setting' => ASTRA_THEME_SETTINGS . '[shop-archive-width]',
- 'operator' => '===',
- 'value' => 'custom',
- ),
- ),
- ),
- );
-
- $configurations = array_merge( $configurations, $_configs );
-
- return $configurations;
-
- }
- }
-}
-
-new Astra_Woo_Shop_Layout_Configs();
-
+<?php +/** + * WooCommerce Options for Astra Theme. + * + * @package Astra + * @author Astra + * @copyright Copyright (c) 2020, Astra + * @link https://wpastra.com/ + * @since Astra 1.1.0 + */ + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( 'Astra_Woo_Shop_Layout_Configs' ) ) { + + /** + * Customizer Sanitizes Initial setup + */ + class Astra_Woo_Shop_Layout_Configs extends Astra_Customizer_Config_Base { + + /** + * Register Astra-WooCommerce Shop Layout Customizer Configurations. + * + * @param Array $configurations Astra Customizer Configurations. + * @param WP_Customize_Manager $wp_customize instance of WP_Customize_Manager. + * @since 1.4.3 + * @return Array Astra Customizer Configurations with updated configurations. + */ + public function register_configuration( $configurations, $wp_customize ) { + + $_configs = array( + + /** + * Option: Shop Columns + */ + array( + 'name' => ASTRA_THEME_SETTINGS . '[shop-grids]', + 'type' => 'control', + 'control' => 'ast-responsive-slider', + 'sanitize_callback' => array( 'Astra_Customizer_Sanitizes', 'sanitize_responsive_slider' ), + 'section' => 'woocommerce_product_catalog', + 'default' => astra_get_option( + 'shop-grids', + array( + 'desktop' => 4, + 'tablet' => 3, + 'mobile' => 2, + ) + ), + 'priority' => 11, + 'title' => __( 'Shop Columns', 'astra' ), + 'input_attrs' => array( + 'step' => 1, + 'min' => 1, + 'max' => 6, + ), + ), + + /** + * Option: Products Per Page + */ + array( + 'name' => ASTRA_THEME_SETTINGS . '[shop-no-of-products]', + 'type' => 'control', + 'section' => 'woocommerce_product_catalog', + 'title' => __( 'Products Per Page', 'astra' ), + 'default' => astra_get_option( 'shop-no-of-products' ), + 'control' => 'number', + 'priority' => 15, + 'input_attrs' => array( + 'min' => 1, + 'step' => 1, + 'max' => 100, + ), + ), + + /** + * Option: Single Post Meta + */ + array( + 'name' => ASTRA_THEME_SETTINGS . '[shop-product-structure]', + 'type' => 'control', + 'control' => 'ast-sortable', + 'sanitize_callback' => array( 'Astra_Customizer_Sanitizes', 'sanitize_multi_choices' ), + 'section' => 'woocommerce_product_catalog', + 'default' => astra_get_option( 'shop-product-structure' ), + 'priority' => 15, + 'title' => __( 'Shop Product Structure', 'astra' ), + 'choices' => array( + 'title' => __( 'Title', 'astra' ), + 'price' => __( 'Price', 'astra' ), + 'ratings' => __( 'Ratings', 'astra' ), + 'short_desc' => __( 'Short Description', 'astra' ), + 'add_cart' => __( 'Add To Cart', 'astra' ), + 'category' => __( 'Category', 'astra' ), + ), + ), + + /** + * Option: Shop Archive Content Width + */ + array( + 'name' => ASTRA_THEME_SETTINGS . '[shop-archive-width]', + 'type' => 'control', + 'control' => 'ast-select', + 'section' => 'woocommerce_product_catalog', + 'default' => astra_get_option( 'shop-archive-width' ), + 'priority' => 10, + 'title' => __( 'Shop Archive Content Width', 'astra' ), + 'choices' => array( + 'default' => __( 'Default', 'astra' ), + 'custom' => __( 'Custom', 'astra' ), + ), + 'divider' => array( 'ast_class' => 'ast-bottom-divider' ), + ), + + /** + * Option: Enter Width + */ + array( + 'name' => ASTRA_THEME_SETTINGS . '[shop-archive-max-width]', + 'type' => 'control', + 'control' => 'ast-slider', + 'section' => 'woocommerce_product_catalog', + 'default' => astra_get_option( 'shop-archive-max-width' ), + 'priority' => 10, + 'title' => __( 'Custom Width', 'astra' ), + 'transport' => 'postMessage', + 'suffix' => 'px', + 'input_attrs' => array( + 'min' => 768, + 'step' => 1, + 'max' => 1920, + ), + 'divider' => array( 'ast_class' => 'ast-bottom-divider' ), + 'context' => array( + Astra_Builder_Helper::$general_tab_config, + array( + 'setting' => ASTRA_THEME_SETTINGS . '[shop-archive-width]', + 'operator' => '===', + 'value' => 'custom', + ), + ), + ), + ); + + $configurations = array_merge( $configurations, $_configs ); + + return $configurations; + + } + } +} + +new Astra_Woo_Shop_Layout_Configs(); + diff --git a/inc/compatibility/woocommerce/customizer/sections/layout/class-astra-woo-shop-single-layout-configs.php b/inc/compatibility/woocommerce/customizer/sections/layout/class-astra-woo-shop-single-layout-configs.php index 5a02370..ca1b1d3 100644 --- a/inc/compatibility/woocommerce/customizer/sections/layout/class-astra-woo-shop-single-layout-configs.php +++ b/inc/compatibility/woocommerce/customizer/sections/layout/class-astra-woo-shop-single-layout-configs.php @@ -1,80 +1,80 @@ -<?php
-/**
- * WooCommerce Options for Astra Theme.
- *
- * @package Astra
- * @author Astra
- * @copyright Copyright (c) 2020, Astra
- * @link https://wpastra.com/
- * @since Astra 1.1.0
- */
-
-if ( ! defined( 'ABSPATH' ) ) {
- exit;
-}
-
-if ( ! class_exists( 'Astra_Woo_Shop_Single_Layout_Configs' ) ) {
-
-
- /**
- * Customizer Sanitizes Initial setup
- */
- class Astra_Woo_Shop_Single_Layout_Configs extends Astra_Customizer_Config_Base {
-
- /**
- * Register Astra-WooCommerce Shop Single Layout Customizer Configurations.
- *
- * @param Array $configurations Astra Customizer Configurations.
- * @param WP_Customize_Manager $wp_customize instance of WP_Customize_Manager.
- * @since 1.4.3
- * @return Array Astra Customizer Configurations with updated configurations.
- */
- public function register_configuration( $configurations, $wp_customize ) {
-
- $_configs = array(
-
- /**
- * Option: Disable Breadcrumb
- */
- array(
- 'name' => ASTRA_THEME_SETTINGS . '[single-product-breadcrumb-disable]',
- 'section' => 'section-woo-shop-single',
- 'type' => 'control',
- 'control' => 'ast-toggle-control',
- 'default' => astra_get_option( 'single-product-breadcrumb-disable' ),
- 'title' => __( 'Disable Breadcrumb', 'astra' ),
- 'priority' => 16,
- ),
-
- /**
- * Option: Disable Transparent Header on WooCommerce Product pages
- */
- array(
- 'name' => ASTRA_THEME_SETTINGS . '[transparent-header-disable-woo-products]',
- 'default' => astra_get_option( 'transparent-header-disable-woo-products' ),
- 'type' => 'control',
- 'section' => 'section-transparent-header',
- 'title' => __( 'Disable on WooCommerce Product Pages?', 'astra' ),
- 'context' => array(
- Astra_Builder_Helper::$general_tab_config,
- array(
- 'setting' => ASTRA_THEME_SETTINGS . '[transparent-header-enable]',
- 'operator' => '==',
- 'value' => '1',
- ),
- ),
- 'priority' => 26,
- 'control' => 'ast-toggle-control',
- 'divider' => array( 'ast_class' => 'ast-bottom-divider' ),
- ),
- );
-
- return array_merge( $configurations, $_configs );
-
- }
- }
-}
-
-new Astra_Woo_Shop_Single_Layout_Configs();
-
-
+<?php +/** + * WooCommerce Options for Astra Theme. + * + * @package Astra + * @author Astra + * @copyright Copyright (c) 2020, Astra + * @link https://wpastra.com/ + * @since Astra 1.1.0 + */ + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( 'Astra_Woo_Shop_Single_Layout_Configs' ) ) { + + + /** + * Customizer Sanitizes Initial setup + */ + class Astra_Woo_Shop_Single_Layout_Configs extends Astra_Customizer_Config_Base { + + /** + * Register Astra-WooCommerce Shop Single Layout Customizer Configurations. + * + * @param Array $configurations Astra Customizer Configurations. + * @param WP_Customize_Manager $wp_customize instance of WP_Customize_Manager. + * @since 1.4.3 + * @return Array Astra Customizer Configurations with updated configurations. + */ + public function register_configuration( $configurations, $wp_customize ) { + + $_configs = array( + + /** + * Option: Disable Breadcrumb + */ + array( + 'name' => ASTRA_THEME_SETTINGS . '[single-product-breadcrumb-disable]', + 'section' => 'section-woo-shop-single', + 'type' => 'control', + 'control' => 'ast-toggle-control', + 'default' => astra_get_option( 'single-product-breadcrumb-disable' ), + 'title' => __( 'Disable Breadcrumb', 'astra' ), + 'priority' => 16, + ), + + /** + * Option: Disable Transparent Header on WooCommerce Product pages + */ + array( + 'name' => ASTRA_THEME_SETTINGS . '[transparent-header-disable-woo-products]', + 'default' => astra_get_option( 'transparent-header-disable-woo-products' ), + 'type' => 'control', + 'section' => 'section-transparent-header', + 'title' => __( 'Disable on WooCommerce Product Pages?', 'astra' ), + 'context' => array( + Astra_Builder_Helper::$general_tab_config, + array( + 'setting' => ASTRA_THEME_SETTINGS . '[transparent-header-enable]', + 'operator' => '==', + 'value' => '1', + ), + ), + 'priority' => 26, + 'control' => 'ast-toggle-control', + 'divider' => array( 'ast_class' => 'ast-bottom-divider' ), + ), + ); + + return array_merge( $configurations, $_configs ); + + } + } +} + +new Astra_Woo_Shop_Single_Layout_Configs(); + + diff --git a/inc/compatibility/woocommerce/woocommerce-common-functions.php b/inc/compatibility/woocommerce/woocommerce-common-functions.php index 4921337..1a0995a 100644 --- a/inc/compatibility/woocommerce/woocommerce-common-functions.php +++ b/inc/compatibility/woocommerce/woocommerce-common-functions.php @@ -1,299 +1,299 @@ -<?php
-/**
- * Custom functions that used for Woocommerce compatibility.
- *
- * Eventually, some of the functionality here could be replaced by core features.
- *
- * @package Astra
- * @author Astra
- * @copyright Copyright (c) 2020, Astra
- * @link https://wpastra.com/
- * @since Astra 1.1.0
- */
-
-if ( ! defined( 'ABSPATH' ) ) {
- exit; // Exit if accessed directly.
-}
-
-/**
- * Shop page - Products Title markup updated
- */
-if ( ! function_exists( 'astra_woo_shop_products_title' ) ) :
-
- /**
- * Shop Page product titles with anchor
- *
- * @hooked woocommerce_after_shop_loop_item - 10
- *
- * @since 1.1.0
- */
- function astra_woo_shop_products_title() {
- echo '<a href="' . esc_url( get_the_permalink() ) . '" class="woocommerce-LoopProduct-link woocommerce-loop-product__link">';
-
- echo '<h2 class="woocommerce-loop-product__title">' . esc_html( get_the_title() ) . '</h2>';
-
- echo '</a>';
- }
-
-endif;
-
-/**
- * Shop page - Parent Category
- */
-if ( ! function_exists( 'astra_woo_shop_parent_category' ) ) :
- /**
- * Add and/or Remove Categories from shop archive page.
- *
- * @hooked woocommerce_after_shop_loop_item - 9
- *
- * @since 1.1.0
- */
- function astra_woo_shop_parent_category() {
- if ( apply_filters( 'astra_woo_shop_parent_category', true ) ) : ?>
- <span class="ast-woo-product-category">
- <?php
- global $product;
- $product_categories = function_exists( 'wc_get_product_category_list' ) ? wc_get_product_category_list( get_the_ID(), ';', '', '' ) : $product->get_categories( ';', '', '' );
-
- $product_categories = htmlspecialchars_decode( wp_strip_all_tags( $product_categories ) );
- if ( $product_categories ) {
- list( $parent_cat ) = explode( ';', $product_categories );
- echo apply_filters( 'astra_woo_shop_product_categories', esc_html( $parent_cat ), get_the_ID() ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
- }
-
- ?>
- </span>
- <?php
- endif;
- }
-endif;
-
-/**
- * Shop page - Out of Stock
- */
-if ( ! function_exists( 'astra_woo_shop_out_of_stock' ) ) :
- /**
- * Add Out of Stock to the Shop page
- *
- * @hooked woocommerce_shop_loop_item_title - 8
- *
- * @since 1.1.0
- */
- function astra_woo_shop_out_of_stock() {
- $out_of_stock = get_post_meta( get_the_ID(), '_stock_status', true );
- $out_of_stock_string = apply_filters( 'astra_woo_shop_out_of_stock_string', __( 'Out of stock', 'astra' ) );
- if ( 'outofstock' === $out_of_stock ) {
- ?>
- <span class="ast-shop-product-out-of-stock"><?php echo esc_html( $out_of_stock_string ); ?></span>
- <?php
- }
- }
-
-endif;
-
-/**
- * Shop page - Short Description
- */
-if ( ! function_exists( 'astra_woo_shop_product_short_description' ) ) :
- /**
- * Product short description
- *
- * @hooked woocommerce_after_shop_loop_item
- *
- * @since 1.1.0
- */
- function astra_woo_shop_product_short_description() {
- ?>
- <?php if ( has_excerpt() ) { ?>
- <div class="ast-woo-shop-product-description">
- <?php the_excerpt(); ?>
- </div>
- <?php } ?>
- <?php
- }
-endif;
-/**
- * Product page - Availability: in stock
- */
-if ( ! function_exists( 'astra_woo_product_in_stock' ) ) :
- /**
- * Availability: in stock string updated
- *
- * @param string $markup Markup.
- * @param object $product Object of Product.
- *
- * @since 1.1.0
- */
- function astra_woo_product_in_stock( $markup, $product ) {
-
- if ( is_product() ) {
- $product_avail = $product->get_availability();
- $stock_quantity = $product->get_stock_quantity();
- $availability = $product_avail['availability'];
- $avail_class = $product_avail['class'];
- if ( ! empty( $availability ) && $stock_quantity ) {
- ob_start();
- ?>
- <p class="ast-stock-detail">
- <span class="ast-stock-avail"><?php esc_html_e( 'Availability:', 'astra' ); ?></span>
- <span class="stock <?php echo esc_html( $avail_class ); ?>"><?php echo esc_html( $availability ); ?></span>
- </p>
- <?php
- $markup = ob_get_clean();
- }
- }
-
- return $markup;
- }
-endif;
-
-if ( ! function_exists( 'astra_woo_woocommerce_template_loop_product_title' ) ) {
-
- /**
- * Show the product title in the product loop. By default this is an H2.
- */
- function astra_woo_woocommerce_template_loop_product_title() {
-
- echo '<a href="' . esc_url( get_the_permalink() ) . '" class="ast-loop-product__link">';
- woocommerce_template_loop_product_title();
- echo '</a>';
- }
-}
-
-if ( ! function_exists( 'astra_woo_woocommerce_shop_product_content' ) ) {
-
- /**
- * Show the product title in the product loop. By default this is an H2.
- */
- function astra_woo_woocommerce_shop_product_content() {
-
- $shop_structure = apply_filters( 'astra_woo_shop_product_structure', astra_get_option( 'shop-product-structure' ) );
- if ( is_array( $shop_structure ) && ! empty( $shop_structure ) ) {
-
- do_action( 'astra_woo_shop_before_summary_wrap' );
- echo '<div class="astra-shop-summary-wrap">';
- do_action( 'astra_woo_shop_summary_wrap_top' );
-
- foreach ( $shop_structure as $value ) {
-
- switch ( $value ) {
- case 'title':
- /**
- * Add Product Title on shop page for all products.
- */
- do_action( 'astra_woo_shop_title_before' );
- astra_woo_woocommerce_template_loop_product_title();
- do_action( 'astra_woo_shop_title_after' );
- break;
- case 'price':
- /**
- * Add Product Price on shop page for all products.
- */
- do_action( 'astra_woo_shop_price_before' );
- woocommerce_template_loop_price();
- do_action( 'astra_woo_shop_price_after' );
- break;
- case 'ratings':
- /**
- * Add rating on shop page for all products.
- */
- do_action( 'astra_woo_shop_rating_before' );
- woocommerce_template_loop_rating();
- do_action( 'astra_woo_shop_rating_after' );
- break;
- case 'short_desc':
- do_action( 'astra_woo_shop_short_description_before' );
- astra_woo_shop_product_short_description();
- do_action( 'astra_woo_shop_short_description_after' );
- break;
- case 'add_cart':
- do_action( 'astra_woo_shop_add_to_cart_before' );
- woocommerce_template_loop_add_to_cart();
- do_action( 'astra_woo_shop_add_to_cart_after' );
- break;
- case 'category':
- /**
- * Add and/or Remove Categories from shop archive page.
- */
- do_action( 'astra_woo_shop_category_before' );
- astra_woo_shop_parent_category();
- do_action( 'astra_woo_shop_category_after' );
- break;
- default:
- break;
- }
- }
-
- do_action( 'astra_woo_shop_summary_wrap_bottom' );
- echo '</div>';
- do_action( 'astra_woo_shop_after_summary_wrap' );
- }
- }
-}
-
-if ( ! function_exists( 'astra_woo_shop_thumbnail_wrap_start' ) ) {
-
- /**
- * Thumbnail wrap start.
- */
- function astra_woo_shop_thumbnail_wrap_start() {
-
- echo '<div class="astra-shop-thumbnail-wrap">';
- }
-}
-
-if ( ! function_exists( 'astra_woo_shop_thumbnail_wrap_end' ) ) {
-
- /**
- * Thumbnail wrap end.
- */
- function astra_woo_shop_thumbnail_wrap_end() {
-
- echo '</div>';
- }
-}
-
-
-/**
- * Woocommerce filter - Widget Products Tags
- */
-if ( ! function_exists( 'astra_widget_product_tag_cloud_args' ) ) {
-
- /**
- * Woocommerce filter - Widget Products Tags
- *
- * @param array $args Tag arguments.
- * @return array Modified tag arguments.
- */
- function astra_widget_product_tag_cloud_args( $args = array() ) {
-
- $sidebar_link_font_size = astra_get_option( 'font-size-body' );
- $sidebar_link_font_size['desktop'] = ( '' != $sidebar_link_font_size['desktop'] ) ? $sidebar_link_font_size['desktop'] : 15;
-
- $args['smallest'] = intval( $sidebar_link_font_size['desktop'] ) - 2;
- $args['largest'] = intval( $sidebar_link_font_size['desktop'] ) + 3;
- $args['unit'] = 'px';
-
- return apply_filters( 'astra_widget_product_tag_cloud_args', $args );
- }
- add_filter( 'woocommerce_product_tag_cloud_widget_args', 'astra_widget_product_tag_cloud_args', 90 );
-
-}
-
-/**
- * Woocommerce shop/product div close tag.
- */
-if ( ! function_exists( 'astra_woocommerce_div_wrapper_close' ) ) :
-
- /**
- * Woocommerce shop/product div close tag.
- *
- * @return void
- */
- function astra_woocommerce_div_wrapper_close() {
-
- echo '</div>';
-
- }
-
-endif;
+<?php +/** + * Custom functions that used for Woocommerce compatibility. + * + * Eventually, some of the functionality here could be replaced by core features. + * + * @package Astra + * @author Astra + * @copyright Copyright (c) 2020, Astra + * @link https://wpastra.com/ + * @since Astra 1.1.0 + */ + +if ( ! defined( 'ABSPATH' ) ) { + exit; // Exit if accessed directly. +} + +/** + * Shop page - Products Title markup updated + */ +if ( ! function_exists( 'astra_woo_shop_products_title' ) ) : + + /** + * Shop Page product titles with anchor + * + * @hooked woocommerce_after_shop_loop_item - 10 + * + * @since 1.1.0 + */ + function astra_woo_shop_products_title() { + echo '<a href="' . esc_url( get_the_permalink() ) . '" class="woocommerce-LoopProduct-link woocommerce-loop-product__link">'; + + echo '<h2 class="woocommerce-loop-product__title">' . esc_html( get_the_title() ) . '</h2>'; + + echo '</a>'; + } + +endif; + +/** + * Shop page - Parent Category + */ +if ( ! function_exists( 'astra_woo_shop_parent_category' ) ) : + /** + * Add and/or Remove Categories from shop archive page. + * + * @hooked woocommerce_after_shop_loop_item - 9 + * + * @since 1.1.0 + */ + function astra_woo_shop_parent_category() { + if ( apply_filters( 'astra_woo_shop_parent_category', true ) ) : ?> + <span class="ast-woo-product-category"> + <?php + global $product; + $product_categories = function_exists( 'wc_get_product_category_list' ) ? wc_get_product_category_list( get_the_ID(), ';', '', '' ) : $product->get_categories( ';', '', '' ); + + $product_categories = htmlspecialchars_decode( wp_strip_all_tags( $product_categories ) ); + if ( $product_categories ) { + list( $parent_cat ) = explode( ';', $product_categories ); + echo apply_filters( 'astra_woo_shop_product_categories', esc_html( $parent_cat ), get_the_ID() ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + + ?> + </span> + <?php + endif; + } +endif; + +/** + * Shop page - Out of Stock + */ +if ( ! function_exists( 'astra_woo_shop_out_of_stock' ) ) : + /** + * Add Out of Stock to the Shop page + * + * @hooked woocommerce_shop_loop_item_title - 8 + * + * @since 1.1.0 + */ + function astra_woo_shop_out_of_stock() { + $out_of_stock = get_post_meta( get_the_ID(), '_stock_status', true ); + $out_of_stock_string = apply_filters( 'astra_woo_shop_out_of_stock_string', __( 'Out of stock', 'astra' ) ); + if ( 'outofstock' === $out_of_stock ) { + ?> + <span class="ast-shop-product-out-of-stock"><?php echo esc_html( $out_of_stock_string ); ?></span> + <?php + } + } + +endif; + +/** + * Shop page - Short Description + */ +if ( ! function_exists( 'astra_woo_shop_product_short_description' ) ) : + /** + * Product short description + * + * @hooked woocommerce_after_shop_loop_item + * + * @since 1.1.0 + */ + function astra_woo_shop_product_short_description() { + ?> + <?php if ( has_excerpt() ) { ?> + <div class="ast-woo-shop-product-description"> + <?php the_excerpt(); ?> + </div> + <?php } ?> + <?php + } +endif; +/** + * Product page - Availability: in stock + */ +if ( ! function_exists( 'astra_woo_product_in_stock' ) ) : + /** + * Availability: in stock string updated + * + * @param string $markup Markup. + * @param object $product Object of Product. + * + * @since 1.1.0 + */ + function astra_woo_product_in_stock( $markup, $product ) { + + if ( is_product() ) { + $product_avail = $product->get_availability(); + $stock_quantity = $product->get_stock_quantity(); + $availability = $product_avail['availability']; + $avail_class = $product_avail['class']; + if ( ! empty( $availability ) && $stock_quantity ) { + ob_start(); + ?> + <p class="ast-stock-detail"> + <span class="ast-stock-avail"><?php esc_html_e( 'Availability:', 'astra' ); ?></span> + <span class="stock <?php echo esc_html( $avail_class ); ?>"><?php echo esc_html( $availability ); ?></span> + </p> + <?php + $markup = ob_get_clean(); + } + } + + return $markup; + } +endif; + +if ( ! function_exists( 'astra_woo_woocommerce_template_loop_product_title' ) ) { + + /** + * Show the product title in the product loop. By default this is an H2. + */ + function astra_woo_woocommerce_template_loop_product_title() { + + echo '<a href="' . esc_url( get_the_permalink() ) . '" class="ast-loop-product__link">'; + woocommerce_template_loop_product_title(); + echo '</a>'; + } +} + +if ( ! function_exists( 'astra_woo_woocommerce_shop_product_content' ) ) { + + /** + * Show the product title in the product loop. By default this is an H2. + */ + function astra_woo_woocommerce_shop_product_content() { + + $shop_structure = apply_filters( 'astra_woo_shop_product_structure', astra_get_option( 'shop-product-structure' ) ); + if ( is_array( $shop_structure ) && ! empty( $shop_structure ) ) { + + do_action( 'astra_woo_shop_before_summary_wrap' ); + echo '<div class="astra-shop-summary-wrap">'; + do_action( 'astra_woo_shop_summary_wrap_top' ); + + foreach ( $shop_structure as $value ) { + + switch ( $value ) { + case 'title': + /** + * Add Product Title on shop page for all products. + */ + do_action( 'astra_woo_shop_title_before' ); + astra_woo_woocommerce_template_loop_product_title(); + do_action( 'astra_woo_shop_title_after' ); + break; + case 'price': + /** + * Add Product Price on shop page for all products. + */ + do_action( 'astra_woo_shop_price_before' ); + woocommerce_template_loop_price(); + do_action( 'astra_woo_shop_price_after' ); + break; + case 'ratings': + /** + * Add rating on shop page for all products. + */ + do_action( 'astra_woo_shop_rating_before' ); + woocommerce_template_loop_rating(); + do_action( 'astra_woo_shop_rating_after' ); + break; + case 'short_desc': + do_action( 'astra_woo_shop_short_description_before' ); + astra_woo_shop_product_short_description(); + do_action( 'astra_woo_shop_short_description_after' ); + break; + case 'add_cart': + do_action( 'astra_woo_shop_add_to_cart_before' ); + woocommerce_template_loop_add_to_cart(); + do_action( 'astra_woo_shop_add_to_cart_after' ); + break; + case 'category': + /** + * Add and/or Remove Categories from shop archive page. + */ + do_action( 'astra_woo_shop_category_before' ); + astra_woo_shop_parent_category(); + do_action( 'astra_woo_shop_category_after' ); + break; + default: + break; + } + } + + do_action( 'astra_woo_shop_summary_wrap_bottom' ); + echo '</div>'; + do_action( 'astra_woo_shop_after_summary_wrap' ); + } + } +} + +if ( ! function_exists( 'astra_woo_shop_thumbnail_wrap_start' ) ) { + + /** + * Thumbnail wrap start. + */ + function astra_woo_shop_thumbnail_wrap_start() { + + echo '<div class="astra-shop-thumbnail-wrap">'; + } +} + +if ( ! function_exists( 'astra_woo_shop_thumbnail_wrap_end' ) ) { + + /** + * Thumbnail wrap end. + */ + function astra_woo_shop_thumbnail_wrap_end() { + + echo '</div>'; + } +} + + +/** + * Woocommerce filter - Widget Products Tags + */ +if ( ! function_exists( 'astra_widget_product_tag_cloud_args' ) ) { + + /** + * Woocommerce filter - Widget Products Tags + * + * @param array $args Tag arguments. + * @return array Modified tag arguments. + */ + function astra_widget_product_tag_cloud_args( $args = array() ) { + + $sidebar_link_font_size = astra_get_option( 'font-size-body' ); + $sidebar_link_font_size['desktop'] = ( '' != $sidebar_link_font_size['desktop'] ) ? $sidebar_link_font_size['desktop'] : 15; + + $args['smallest'] = intval( $sidebar_link_font_size['desktop'] ) - 2; + $args['largest'] = intval( $sidebar_link_font_size['desktop'] ) + 3; + $args['unit'] = 'px'; + + return apply_filters( 'astra_widget_product_tag_cloud_args', $args ); + } + add_filter( 'woocommerce_product_tag_cloud_widget_args', 'astra_widget_product_tag_cloud_args', 90 ); + +} + +/** + * Woocommerce shop/product div close tag. + */ +if ( ! function_exists( 'astra_woocommerce_div_wrapper_close' ) ) : + + /** + * Woocommerce shop/product div close tag. + * + * @return void + */ + function astra_woocommerce_div_wrapper_close() { + + echo '</div>'; + + } + +endif; |