'; } function estore_wrapper_end() { echo ''; } add_action( 'widgets_init', 'estore_woocommerce_widgets_init' ); /** * Register widget area related to WooCommerce. * * @link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar */ function estore_woocommerce_widgets_init() { // Register sidebar for WooCommerce Pages register_sidebar( array( 'name' => esc_html__( 'Shop Sidebar', 'estore' ), 'id' => 'estore_woocommerce_sidebar', 'description' => esc_html__( 'Widget area for WooCommerce Pages.', 'estore' ), 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '

', 'after_title' => '

' ) ); // Register Widgets using WooCommerce data register_widget( "estore_woocommerce_full_width_promo_widget" ); register_widget( "estore_woocommerce_product_carousel" ); register_widget( "estore_woocommerce_product_grid" ); register_widget( "estore_woocommerce_product_slider" ); register_widget( "estore_woocommerce_vertical_promo_widget" ); } /** * Register WooCommerce related Theme Settings * */ function estore_woocommerce_settings_register( $wp_customize ) { // WooCommerce Category Color Options $wp_customize->add_panel( 'estore_woocommerce_panel', array( 'priority' => 1000, 'title' => esc_html__( 'WooCommerce Settings', 'estore' ), 'capability' => 'edit_theme_options', 'description' => esc_html__( 'Change WooCommerce settings related to theme.', 'estore' ) ) ); // Header My Account Link $wp_customize->add_setting( 'estore_header_ac_btn', array( 'default' => '', 'capability' => 'edit_theme_options', 'sanitize_callback' => 'estore_sanitize_checkbox', ) ); $wp_customize->add_control( 'estore_header_ac_btn', array( 'label' => esc_html__( 'Enable My Account Button', 'estore' ), 'section' => 'estore_header_integrations', 'type' => 'checkbox', 'priority' => 10 ) ); // Header Currency Info $wp_customize->add_setting( 'estore_header_currency', array( 'default' => '', 'capability' => 'edit_theme_options', 'sanitize_callback' => 'estore_sanitize_checkbox', ) ); $wp_customize->add_control( 'estore_header_currency', array( 'label' => esc_html__( 'Enable Currency Symbol', 'estore' ), 'section' => 'estore_header_integrations', 'type' => 'checkbox', 'priority' => 20 ) ); $wp_customize->add_section( 'estore_woocommerce_category_color_setting', array( 'priority' => 1, 'title' => esc_html__( 'Category Color Settings', 'estore' ), 'panel' => 'estore_woocommerce_panel' ) ); $priority = 1; $categories = get_terms( 'product_cat' ); // Get all WooCommerce Categories $wp_category_list = array(); foreach ( $categories as $category_list ) { $wp_customize->add_setting( 'estore_woocommerce_category_color_' . $category_list->term_id, array( 'default' => '', 'capability' => 'edit_theme_options', 'sanitize_callback' => 'estore_hex_color_sanitize', 'sanitize_js_callback' => 'estore_color_escaping_sanitize' ) ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'estore_woocommerce_category_color_' . $category_list->term_id, array( 'label' => sprintf( __( ' %s', 'estore' ), $category_list->name ), 'section' => 'estore_woocommerce_category_color_setting', 'settings' => 'estore_woocommerce_category_color_' . $category_list->term_id, 'priority' => $priority ) ) ); $priority++; } // WooCommerce Pages layout $wp_customize->add_section( 'estore_woocommerce_global_layout_section', array( 'priority' => 10, 'title' => esc_html__( 'Archive Page Layout', 'estore' ), 'panel' => 'estore_woocommerce_panel' ) ); $wp_customize->add_setting( 'estore_woocommerce_global_layout', array( 'default' => 'no_sidebar_full_width', 'capability' => 'edit_theme_options', 'sanitize_callback' => 'estore_sanitize_radio' ) ); $wp_customize->add_control( new Estore_Image_Radio_Control ( $wp_customize, 'estore_woocommerce_global_layout', array( 'label' => esc_html__( 'This layout will be reflected in archives, categories, search page etc. of WooCommerce.', 'estore' ), 'section' => 'estore_woocommerce_global_layout_section', 'type' => 'radio', 'choices' => array( 'right_sidebar' => Estore_ADMIN_IMAGES_URL . '/right-sidebar.png', 'left_sidebar' => Estore_ADMIN_IMAGES_URL . '/left-sidebar.png', 'no_sidebar_full_width' => Estore_ADMIN_IMAGES_URL . '/no-sidebar-full-width-layout.png', 'no_sidebar_content_centered' => Estore_ADMIN_IMAGES_URL . '/no-sidebar-content-centered-layout.png' ) ) ) ); // WooCommerce Product Page Layout $wp_customize->add_section( 'estore_woocommerce_product_layout_section', array( 'priority' => 20, 'title' => esc_html__( 'Product Page Layout', 'estore' ), 'panel' => 'estore_woocommerce_panel' ) ); $wp_customize->add_setting( 'estore_woocommerce_product_layout', array( 'default' => 'right_sidebar', 'capability' => 'edit_theme_options', 'sanitize_callback' => 'estore_sanitize_radio' ) ); $wp_customize->add_control( new Estore_Image_Radio_Control ( $wp_customize, 'estore_woocommerce_product_layout', array( 'label' => esc_html__( 'This layout will be reflected in product page of WooCommerce.', 'estore' ), 'section' => 'estore_woocommerce_product_layout_section', 'type' => 'radio', 'choices' => array( 'right_sidebar' => Estore_ADMIN_IMAGES_URL . '/right-sidebar.png', 'left_sidebar' => Estore_ADMIN_IMAGES_URL . '/left-sidebar.png', 'no_sidebar_full_width' => Estore_ADMIN_IMAGES_URL . '/no-sidebar-full-width-layout.png', 'no_sidebar_content_centered' => Estore_ADMIN_IMAGES_URL . '/no-sidebar-content-centered-layout.png' ) ) ) ); $wp_customize->add_setting( 'estore_woocommerce_product_thumb_mask', array( 'default' => '', 'capability' => 'edit_theme_options', 'sanitize_callback' => 'estore_sanitize_checkbox' ) ); $wp_customize->add_control( 'estore_woocommerce_product_thumb_mask', array( 'label' => esc_html__( 'Check to hide hover effect on Product Images in WooCommerce Archive Pages.', 'estore' ), 'section' => 'estore_woocommerce_global_layout_section', 'type' => 'checkbox', ) ); } add_action( 'customize_register', 'estore_woocommerce_settings_register' ); if ( ! function_exists( 'estore_woocommerce_category_color_css' ) ) : /** * Generate color for WooCommerce Category and print on head */ function estore_woocommerce_category_color_css() { $categories = get_terms( 'product_cat', array( 'hide_empty' => false ) ); //print_r($categories); $cat_color_css = ''; foreach ( $categories as $category ) { $cat_color = get_theme_mod( 'estore_woocommerce_category_color_' . $category->term_id ); $hover_color = estore_darkcolor( $cat_color, -20 ); $cat_id = $category->term_id; if ( ! empty( $cat_color ) ) { $cat_color_css .= ' /* Border Color */ .widget-collection .estore-cat-color_' . $cat_id . ' .cart-wishlist-btn a.added_to_cart:hover::after, .widget-collection .estore-cat-color_' . $cat_id . ' .cart-wishlist-btn a.added_to_cart::after, .woocommerce-page .estore-cat-color_' . $cat_id . ' ul.products li.product .products-img .products-hover-wrapper .products-hover-block a:hover, .widget-collection .estore-cat-color_' . $cat_id . ' .cart-wishlist-btn a i, .estore-cat-color_' . $cat_id . ' .hot-product-content-wrapper .hot-img {border-color: ' . $cat_color . '} /* Background Color */ .widget-collection .estore-cat-color_' . $cat_id . ' .cart-wishlist-btn a.added_to_cart:hover::after, .woocommerce-page .estore-cat-color_' . $cat_id . ' ul.products li.product .products-img .products-hover-wrapper .products-hover-block a:hover, .woocommerce-page .estore-cat-color_' . $cat_id . ' ul.products li.product .yith-wcwl-add-to-wishlist .add_to_wishlist.button.alt, .woocommerce-page .estore-cat-color_' . $cat_id . ' ul.products li.product .yith-wcwl-add-to-wishlist .yith-wcwl-wishlistexistsbrowse a, .woocommerce-page .estore-cat-color_' . $cat_id . ' ul.products li.product .yith-wcwl-add-to-wishlist .yith-wcwl-wishlistaddedbrowse a,.product-collection.estore-cat-color_' . $cat_id . ' .page-title::after,.estore-cat-color_' . $cat_id . ' .hot-content-wrapper .single_add_to_wishlist, .widget-collection .estore-cat-color_' . $cat_id . ' .cart-wishlist-btn a i:hover, .estore-cat-color_' . $cat_id . ' .hot-product-title, .widget-collection .estore-cat-color_' . $cat_id . ' .page-title::after{background: ' . $cat_color . '} /* Color */ .estore-cat-color_' . $cat_id . ' .hot-content-wrapper .hot-title a:hover, .estore-cat-color_' . $cat_id . ' .hot-product-content-wrapper .hot-img .cart-price-wrapper .added_to_cart:hover, .widget-collection .estore-cat-color_' . $cat_id . ' .cart-wishlist-btn a.added_to_cart::after, .woocommerce-page .estore-cat-color_' . $cat_id . ' ul.products li.product .price ins, .estore-cat-color_' . $cat_id . ' .product-list-wrap .product-list-block .product-list-content .price ins, .woocommerce-page .estore-cat-color_' . $cat_id . ' ul.products li.product .products-title a:hover, .woocommerce-page .estore-cat-color_' . $cat_id . ' ul.products li.product .star-rating, .estore-cat-color_' . $cat_id . ' .view-all a:hover, .estore-cat-color_' . $cat_id . ' .hot-product-content-wrapper .hot-img .cart-price-wrapper .add_to_cart_button:hover, .widget-collection .estore-cat-color_' . $cat_id . ' .cart-wishlist-btn a i, .estore-cat-color_' . $cat_id . ' .product-list-wrap .product-list-block .product-list-content .product-list-title a:hover, .estore-cat-color_' . $cat_id . ' .hot-content-wrapper .star-rating, .estore-cat-color_' . $cat_id . ' .sorting-form-wrapper a, .estore-cat-color_' . $cat_id . ' .section-title-wrapper .section-title-block .page-title a:hover{color:' . $cat_color . '} /*hover */ .estore-cat-color_' . $cat_id . ' .hot-content-wrapper .single_add_to_wishlist:hover, .woocommerce-page .estore-cat-color_' . $cat_id . ' ul.products li.product .yith-wcwl-add-to-wishlist .add_to_wishlist.button.alt:hover, .woocommerce-page .estore-cat-color_' . $cat_id . ' ul.products li.product .yith-wcwl-add-to-wishlist .yith-wcwl-wishlistexistsbrowse a:hover, .woocommerce-page .estore-cat-color_' . $cat_id . ' ul.products li.product .yith-wcwl-add-to-wishlist .yith-wcwl-wishlistaddedbrowse a:hover{ background: ' . $hover_color . ' } '; } } if ( ! empty( $cat_color_css ) ) { ?> ID ); $image_url = wp_get_attachment_image_src( $image_id, $size, false ); ?>
is_on_sale() ) : ?> ' . esc_html__( 'Sale!', 'estore' ) . '', $post, $product ); ?>
is_on_sale() ) : ?> ' . esc_html__( 'Sale!', 'estore' ) . '', $post, $product ); ?>
' . esc_html( get_the_title() ) . ''; } } add_filter( 'body_class', 'estore_woocommerce_body_class' ); if ( ! function_exists( 'estore_woocommerce_body_class' ) ) { /** * Adds class to body based on page template */ function estore_woocommerce_body_class( $woocommerce_class ) { if ( is_page_template( 'page-templates/template-wc-collection.php' ) ) { // add 'woocommerce-page' class to the $classes array $woocommerce_class[] = 'woocommerce-page'; // return the $woocommerce_class array } return $woocommerce_class; } } /** * Disables theme products per page option for WC >= 3.3 since WC provides option in customizer */ if ( ! estore_woo_version_check( '3.3' ) ) { add_filter( 'loop_shop_columns', 'estore_woocommerce_loop_columns' ); if ( ! function_exists( 'estore_woocommerce_loop_columns' ) ) { /** * Change product per row to 4 */ function estore_woocommerce_loop_columns() { return 4; // 4 products per row } } } if ( ! function_exists( 'estore_woocommerce_layout_class' ) ) : /** * Generate layout class for sidebar based on customizer and post meta settings for woocommerce pages. */ function estore_woocommerce_layout_class() { global $post; $layout = get_theme_mod( 'estore_woocommerce_global_layout', 'right_sidebar' ); // Front page displays in Reading Settings $page_for_posts = get_option( 'page_for_posts' ); // Get Layout meta if ( $post ) { $layout_meta = get_post_meta( $post->ID, 'estore_page_specific_layout', true ); } // Home page if Posts page is assigned if ( is_home() && ! ( is_front_page() ) ) { $queried_id = get_option( 'page_for_posts' ); $layout_meta = get_post_meta( $queried_id, 'estore_page_specific_layout', true ); if ( $layout_meta != 'default_layout' && $layout_meta != '' ) { $layout = get_post_meta( $queried_id, 'estore_page_specific_layout', true ); } } elseif ( is_page() ) { $layout = get_theme_mod( 'estore_woocommerce_global_layout', 'right_sidebar' ); if ( $layout_meta != 'default_layout' && $layout_meta != '' ) { $layout = get_post_meta( $post->ID, 'estore_page_specific_layout', true ); } } elseif ( is_single() ) { $layout = get_theme_mod( 'estore_woocommerce_product_layout', 'right_sidebar' ); if ( $layout_meta != 'default_layout' && $layout_meta != '' ) { $layout = get_post_meta( $post->ID, 'estore_page_specific_layout', true ); } } return $layout; } endif; /** * Get the estore's placeholder image URL for products. * * @return string */ function estore_woocommerce_placeholder_img_src( $image_size = '' ) { if ( $image_size == '' ) { return apply_filters( 'woocommerce_placeholder_img_src', get_template_directory_uri() . '/images/placeholder-shop.jpg' ); } else { $size = estore_get_image_size( $image_size ); $size['width'] = isset( $size['width'] ) ? $size['width'] : ''; $size['height'] = isset( $size['height'] ) ? $size['height'] : ''; return apply_filters( 'woocommerce_placeholder_img_src', get_template_directory_uri() . '/images/placeholder-shop-' . $size['width'] . 'x' . $size['height'] . '.jpg' ); } } function estore_get_image_size( $name ) { global $_wp_additional_image_sizes; if ( isset( $_wp_additional_image_sizes[ $name ] ) ) { return $_wp_additional_image_sizes[ $name ]; } return false; } // Ensure cart contents update when products are added to the cart via AJAX add_filter( 'woocommerce_add_to_cart_fragments', 'estore_woocommerce_header_add_to_cart_fragment' ); function estore_woocommerce_header_add_to_cart_fragment( $fragments ) { ob_start(); ?>
cart->get_cart_url(); ?> cart->get_cart_contents_count() ); ?>
cart->get_cart_subtotal() ); ?>
version, $version, ">=" ) ) { return true; } } return false; }