includes(); $this->hooks(); do_action( 'beetan_woocommerce_loaded', $this ); } /** * Includes */ public function includes() { require_once get_template_directory() . '/inc/woocommerce/woocommerce-functions.php'; // phpcs:ignore WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound } /** * Hooks */ public function hooks() { add_action( 'after_setup_theme', array( $this, 'setup_theme' ) ); add_filter( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); add_filter( 'body_class', array( $this, 'body_class' ) ); add_action( 'wp', array( $this, 'woocommerce_init' ), 1 ); add_action( 'wp', array( $this, 'woocommerce_product' ) ); add_action( 'wp', array( $this, 'woocommerce_cart' ) ); add_action( 'wp', array( $this, 'woocommerce_shop' ), 5 ); add_action( 'wp', array( $this, 'woocommerce_checkout' ) ); add_action( 'widgets_init', array( $this, 'register_widgets' ) ); add_action( 'woocommerce_before_main_content', array( $this, 'woocommerce_wrapper_before' ) ); add_action( 'woocommerce_after_main_content', array( $this, 'woocommerce_wrapper_after' ) ); add_action( 'woocommerce_before_shop_loop', array( $this, 'shop_toolbar_open' ) ); add_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 20 ); add_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 25 ); add_action( 'woocommerce_before_shop_loop', array( $this, 'shop_layout_buttons' ), 30 ); add_action( 'woocommerce_before_shop_loop', array( $this, 'shop_toolbar_close' ), 40 ); if ( beetan_get_option( 'enable_shop_archive_offcanvas_sidebar' ) ) { add_action( 'woocommerce_before_shop_loop', array( $this, 'shop_filter_button' ), 15 ); add_action( 'beetan_before_sidebar_widgets', array( $this, 'shop_sidebar_close_button' ), 10 ); } add_filter( 'woocommerce_add_to_cart_fragments', array( $this, 'woocommerce_cart_link_fragment' ) ); add_filter( 'woocommerce_output_related_products_args', array( $this, 'related_products_args' ) ); add_filter( 'beetan_get_sidebar', array( $this, 'replace_sidebar' ) ); // Remove variations from the product title. add_filter( 'woocommerce_product_variation_title_include_attributes', '__return_false' ); add_filter( 'woocommerce_is_attribute_in_product_name', '__return_false' ); // Products load more ajax function if ( 'default' !== beetan_get_option( 'shop_pagination_type' ) ) { add_action( 'wp_ajax_beetan_shop_load_more_products', 'beetan_shop_load_more_products' ); add_action( 'wp_ajax_nopriv_beetan_shop_load_more_products', 'beetan_shop_load_more_products' ); } // Single product ajax add to cart. if ( get_theme_mod( 'enable_single_ajax_add_to_cart', true ) ) { // Ajax call helper function add_action( 'wc_ajax_beetan_single_ajax_add_to_cart', 'beetan_single_ajax_add_to_cart' ); add_action( 'wc_ajax_nopriv_beetan_single_ajax_add_to_cart', 'beetan_single_ajax_add_to_cart' ); // Remove WC Core add to cart handler to prevent double-add remove_action( 'wp_loaded', array( 'WC_Form_Handler', 'add_to_cart_action' ), 20 ); // Add - add to cart new notice add_filter( 'woocommerce_add_to_cart_fragments', 'beetan_ajax_add_to_cart_add_fragments' ); } // Ajax live search if ( get_theme_mod( 'enable_ajax_search', false ) && 'product' === get_theme_mod( 'beetan_search_post_type', 'product' ) ) { // Ajax call helper function add_action( 'wp_ajax_beetan_product_ajax_search', 'beetan_product_ajax_search' ); add_action( 'wp_ajax_nopriv_beetan_product_ajax_search', 'beetan_product_ajax_search' ); } add_action( 'woocommerce_before_mini_cart_contents', array( $this, 'free_shipping_status_bar' ) ); // Sale Percentage add_filter( 'woocommerce_sale_flash', '__return_false' ); add_action( 'woocommerce_shop_loop_item_title', 'beetan_product_sale_percentage', 8 ); } public function shop_toolbar_open() { echo '
'; } public function shop_toolbar_close() { echo '
'; } public function shop_filter_button() { if ( beetan_get_option( 'enable_shop_archive_offcanvas_sidebar' ) == false ) { return; } if ( is_shop() || is_product_taxonomy() ) { $shop_sidebar = beetan_get_option( 'archive_product_sidebar_position' ); $shop_layout = beetan_get_option( 'archive_product_container_layout' ); if ( $shop_sidebar !== 'no_sidebar' && $shop_layout !== 'stretched' ) { echo '
'; echo 'filter_alt ' . esc_html__( 'Filter', 'beetan' ) . ''; echo '
'; } } } public function shop_sidebar_close_button() { if ( beetan_get_option( 'enable_shop_archive_offcanvas_sidebar' ) == false ) { return; } if ( is_shop() || is_product_taxonomy() ) { echo ''; } } public function shop_layout_buttons() { if ( is_shop() || is_product_taxonomy() ) { echo ''; } } /** * WooCommerce setup theme */ public function setup_theme() { add_theme_support( 'woocommerce', array( 'thumbnail_image_width' => 150, 'single_image_width' => 300, 'product_grid' => array( 'default_rows' => 3, 'min_rows' => 1, 'default_columns' => 4, 'min_columns' => 1, 'max_columns' => 6, ), ) ); add_theme_support( 'wc-product-gallery-zoom' ); add_theme_support( 'wc-product-gallery-lightbox' ); add_theme_support( 'wc-product-gallery-slider' ); } /** * WooCommerce specific scripts & stylesheets. */ public function enqueue_scripts() { $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; wp_enqueue_style( 'beetan-woocommerce-style', esc_url( get_theme_file_uri( "/assets/css/woocommerce{$suffix}.css" ) ), array(), beetan_assets_version( "/assets/css/woocommerce{$suffix}.css" ) ); $font_path = WC()->plugin_url() . '/assets/fonts/'; $inline_font = '@font-face { font-family: "star"; src: url("' . $font_path . 'star.eot"); src: url("' . $font_path . 'star.eot?#iefix") format("embedded-opentype"), url("' . $font_path . 'star.woff") format("woff"), url("' . $font_path . 'star.ttf") format("truetype"), url("' . $font_path . 'star.svg#star") format("svg"); font-weight: normal; font-style: normal; }'; wp_add_inline_style( 'beetan-woocommerce-style', $inline_font ); wp_enqueue_script( 'beetan-woocommerce-scripts', esc_url( get_theme_file_uri( "/assets/js/woocommerce{$suffix}.js" ) ), array( 'jquery' ), beetan_assets_version( "/assets/js/woocommerce{$suffix}.js" ), true ); wp_register_script( 'beetan-sticky-add-to-cart', esc_url( get_theme_file_uri( "/assets/js/sticky-add-to-cart{$suffix}.js" ) ), array( 'jquery' ), beetan_assets_version( "/assets/js/sticky-add-to-cart{$suffix}.js" ), true ); wp_register_script( 'beetan-quantity-plus-minus', esc_url( get_theme_file_uri( "/assets/js/quantity-plus-minus{$suffix}.js" ) ), array( 'jquery' ), beetan_assets_version( "/assets/js/quantity-plus-minus{$suffix}.js" ), true ); wp_register_script( 'beetan-mini-cart', esc_url( get_theme_file_uri( "/assets/js/mini-cart{$suffix}.js" ) ), array( 'jquery' ), beetan_assets_version( "/assets/js/mini-cart{$suffix}.js" ), true ); wp_register_script( 'beetan-multistep-checkout', esc_url( get_theme_file_uri( "/assets/js/multistep-checkout{$suffix}.js" ) ), array( 'jquery' ), beetan_assets_version( "/assets/js/multistep-checkout{$suffix}.js" ), true ); wp_register_script( 'jquery-validate', esc_url( get_theme_file_uri( "/assets/js/jquery.validate{$suffix}.js" ) ), array( 'jquery' ), beetan_assets_version( "/assets/js/jquery.validate{$suffix}.js" ), true ); if ( is_product() && get_theme_mod( 'enable_single_ajax_add_to_cart', true ) ) { wp_enqueue_script( 'beetan-single-ajax-add-to-cart', esc_url( get_theme_file_uri( "/assets/js/single-ajax-add-to-cart{$suffix}.js" ) ), array( 'jquery' ), beetan_assets_version( "/assets/js/single-ajax-add-to-cart{$suffix}.js" ), true ); wp_localize_script( 'beetan-single-ajax-add-to-cart', 'beetan_single_ajax_add_to_cart', array( 'ajax_nonce' => wp_create_nonce( 'beetan_single_product_nonce' ) ) ); } // Ajax live search script if ( get_theme_mod( 'enable_ajax_search', false ) && 'product' === get_theme_mod( 'beetan_search_post_type', 'product' ) ) { wp_enqueue_script( 'beetan-product-ajax-search', esc_url( get_theme_file_uri( "/assets/js/product-ajax-search{$suffix}.js" ) ), array( 'jquery' ), beetan_assets_version( "/assets/js/product-ajax-search{$suffix}.js" ), true ); wp_localize_script( 'beetan-product-ajax-search', 'beetan_product_ajax_search', array( 'ajax_nonce' => wp_create_nonce( 'beetan_product_ajax_search_nonce' ), 'query_args' => array( 'limit' => get_theme_mod( 'ajax_search_result_limit', 5 ), 'orderby' => get_theme_mod( 'ajax_search_result_order_by', 'title' ), 'order' => get_theme_mod( 'ajax_search_result_order', 'asc' ), ) ) ); } // Shop load more products script if ( 'default' !== beetan_get_option( 'shop_pagination_type' ) && ( is_shop() || is_product_taxonomy() ) ) { global $wp_query; wp_enqueue_script( 'beetan-shop-load-more-products', esc_url( get_theme_file_uri( "/assets/js/shop-load-more-products{$suffix}.js" ) ), array( 'jquery' ), beetan_assets_version( "/assets/js/shop-load-more-products{$suffix}.js" ), true ); wp_localize_script( 'beetan-shop-load-more-products', 'beetan_shop_load_more_products', array( 'ajax_nonce' => wp_create_nonce( 'beetan_shop_load_more_products_nonce' ), 'ajax_url' => admin_url( 'admin-ajax.php' ), 'posts' => json_encode( $wp_query->query_vars ), 'current_page' => get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1, 'max_page' => $wp_query->max_num_pages, 'btn_load_more_text' => esc_html__( 'Load More', 'beetan' ), 'btn_loading_text' => esc_html__( 'Loading ...', 'beetan' ), ) ); } } /** * Add 'woocommerce-active' class to the body tag. * * @param $classes * * @return mixed */ public function body_class( $classes ) { $classes[] = 'woocommerce-active'; // Add shop offcanvas sidebar class if ( beetan_get_option( 'enable_shop_archive_offcanvas_sidebar' ) && ( is_shop() || is_product_taxonomy() ) ) { $classes[] = 'shop-offcanvas-sidebar'; } if ( is_shop() || is_product_taxonomy() ) { $classes[] = 'shop-pagination-type-' . beetan_get_option( 'shop_pagination_type' ); } // Add quantity plus/minus class if ( beetan_get_option( 'product_quantity_plus_minus_button' ) ) { $classes[] = 'qty-button-' . get_theme_mod( 'product_quantity_input_style', 'style-2' ); } // Add mini cart class if ( beetan_get_option( 'enable_mini_cart' ) ) { $classes[] = 'mini-cart-' . get_theme_mod( 'mini_cart_layout', 'dropdown' ); } // Add single product page class if ( is_product() ) { // Add sticky product summary class if ( beetan_get_option( 'sticky_product_summary' ) ) { $classes[] = 'sticky-product-summary'; } } // Add cart page class if ( is_cart() ) { $classes[] = 'cart-' . beetan_get_option( 'shop_cart_layout' ); // Add cart total sticky class if ( beetan_get_option( 'sticky_cart_totals' ) && 'layout-2' === beetan_get_option( 'shop_cart_layout' ) ) { $classes[] = 'sticky-cart-totals'; } // Add cart auto update class if ( beetan_get_option( 'cart_auto_update' ) ) { $classes[] = 'cart-auto-update'; } } // Add checkout page class if ( is_checkout() ) { $classes[] = 'checkout-' . beetan_get_option( 'shop_checkout_layout' ); // Add sticky order summary if ( beetan_get_option( 'sticky_checkout_order_summary' ) && 'layout-2' === beetan_get_option( 'shop_checkout_layout' ) ) { $classes[] = 'sticky-order-summary'; } if ( beetan_get_option( 'enable_distraction_free_checkout' ) ) { $classes[] = 'distraction-free-checkout'; } } return $classes; } /** * Remove WooCommerce 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_before_shop_loop', 'woocommerce_result_count', 20 ); remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 ); } /** * WooCommerce Single Product Page Customization */ public function woocommerce_product() { if ( ! is_product() ) { return; } // Remove upsells if ( ! get_theme_mod( 'enable_upsells', true ) ) { remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15 ); } // Remove related products if ( ! get_theme_mod( 'enable_related_products', true ) ) { remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 ); } // Remove Breadcrumb if ( ! get_theme_mod( 'enable_single_product_breadcrumb', true ) ) { remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0 ); } // Sticky add to cart if ( get_theme_mod( 'sticky_add_to_cart', true ) ) { // Add JS script wp_enqueue_script( 'beetan-sticky-add-to-cart' ); // Add sticky add to cart markup add_action( 'wp_footer', 'beetan_sticky_add_to_cart' ); } // Add payment icons if ( in_array( 'single-product', get_theme_mod( 'payment_icons_placement', beetan_default_option( 'payment_icons_placement' ) ) ) ) { add_action( 'woocommerce_product_meta_end', 'beetan_payment_icons_section', 10 ); } } /** * WooCommerce Shop Product Customization */ public function woocommerce_shop() { remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 ); remove_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title', 10 ); add_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_link_close', 10 ); add_action( 'woocommerce_shop_loop_item_title', 'beetan_shop_product_title', 10 ); // add_action( 'woocommerce_shop_loop_item_title', 'beetan_product_sale_percentage', 8 ); add_action( 'woocommerce_shop_loop_item_title', 'beetan_product_brand', 9 ); add_action( 'woocommerce_before_shop_loop_item_title', 'beetan_shop_product_img_overlay', 20 ); add_action( 'beetan_shop_thumbnail_overlay_content', 'beetan_shop_item_view_details_button', 15 ); add_filter( 'woocommerce_pagination_args', 'beetan_change_shop_pagination_arrow' ); // Mini Cart if ( get_theme_mod( 'enable_mini_cart', true ) ) { wp_enqueue_script( 'beetan-mini-cart' ); } // Enable Quantity +/- button if ( get_theme_mod( 'product_quantity_plus_minus_button', true ) ) { wp_enqueue_script( 'beetan-quantity-plus-minus' ); add_action( 'woocommerce_after_quantity_input_field', 'beetan_product_quantity_button' ); } // Shop title if ( ! beetan_get_option( 'enable_shop_archive_title' ) && is_shop() ) { add_filter( 'woocommerce_show_page_title', '__return_false' ); } // Shop breadcrumb if ( ! beetan_get_option( 'enable_shop_archive_breadcrumb' ) && ( is_shop() || is_product_taxonomy() ) ) { remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20 ); } // Shop result count if ( ! beetan_get_option( 'enable_shop_archive_result_count' ) ) { remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 25 ); } // Shop product sorting dropdown if ( ! beetan_get_option( 'enable_shop_archive_product_sorting' ) ) { remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 20 ); } // Shop product view layout button if ( ! beetan_get_option( 'enable_shop_archive_product_view' ) ) { remove_action( 'woocommerce_before_shop_loop', array( $this, 'shop_layout_buttons' ), 30 ); } if ( 'default' !== beetan_get_option( 'shop_pagination_type' ) ) { // Remove Woocommerce pagination as we do not need it anymore remove_action( 'woocommerce_after_shop_loop', 'woocommerce_pagination', 10 ); // Add Load More button add_action( 'woocommerce_after_shop_loop', 'beetan_shop_load_more_button' ); } if ( defined( 'YITH_WCQV' ) ) { remove_action( 'woocommerce_after_shop_loop_item', array( YITH_WCQV_Frontend(), 'yith_add_quick_view_button' ), 15 ); add_action( 'beetan_shop_thumbnail_overlay_content', array( YITH_WCQV_Frontend(), 'yith_add_quick_view_button' ), 10 ); } // Swatches Pro compatibility wp_enqueue_script( 'woo-variation-swatches-pro' ); } /** * WooCommerce Checkout Page */ public function woocommerce_checkout() { if ( ! is_checkout() ) { return; } // Remove Apply Coupon field if ( ! get_theme_mod( 'enable_apply_coupon', true ) ) { remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 ); } // Remove Order Notes field if ( ! get_theme_mod( 'enable_order_notes', true ) ) { add_filter( 'woocommerce_enable_order_notes_field', '__return_false', 9999 ); } // Multistep checkout if ( beetan_is_multistep_checkout() ) { // Add JS script wp_enqueue_script( 'beetan-multistep-checkout' ); wp_enqueue_script( 'jquery-validate' ); // Remove default checkout template. remove_action( 'woocommerce_checkout_order_review', 'woocommerce_checkout_payment', 20 ); remove_action( 'woocommerce_checkout_terms_and_conditions', 'wc_terms_and_conditions_page_content', 30 ); remove_action( 'woocommerce_checkout_before_customer_details', 'wc_get_pay_buttons', 30 ); // Multistep progress bar add_action( 'beetan_before_page_entry_content', 'beetan_multistep_checkout_header' ); // Start Multistep Checkout Wrap add_action( 'woocommerce_checkout_before_customer_details', 'beetan_multistep_checkout_wrap_start', 10 ); // First step wrap add_action( 'woocommerce_checkout_before_customer_details', 'beetan_multistep_checkout_first_step_wrap_start', 20 ); add_action( 'woocommerce_checkout_after_customer_details', 'beetan_multistep_checkout_first_step_wrap_end', 10 ); // Second step wrap add_action( 'woocommerce_checkout_after_customer_details', 'beetan_multistep_checkout_second_step_wrap', 20 ); // Third step wrap add_action( 'woocommerce_checkout_after_customer_details', 'beetan_multistep_checkout_third_step_wrap', 30 ); // Third step content add_action( 'beetan_multistep_checkout_third_step', 'woocommerce_checkout_payment', 10 ); add_action( 'beetan_multistep_checkout_third_step', 'wc_get_pay_buttons', 40 ); // End Multistep Checkout Wrap add_action( 'woocommerce_checkout_after_customer_details', 'beetan_multistep_checkout_wrap_end', 100 ); } } /** * WooCommerce Cart Page */ public function woocommerce_cart() { if ( ! is_cart() ) { return; } // Hide cart page coupon form if ( get_theme_mod( 'hide_coupon_cart_page', false ) ) { add_filter( 'woocommerce_coupons_enabled', '__return_false' ); } // Add payment icons if ( in_array( 'cart-sidebar', get_theme_mod( 'payment_icons_placement', beetan_default_option( 'payment_icons_placement' ) ) ) ) { add_action( 'woocommerce_proceed_to_checkout', 'beetan_payment_icons_section', 9 ); } // Change cart page `Proceed to Checkout` button text if ( ! empty( get_theme_mod( 'proceed_to_checkout_button_text' ) ) && get_theme_mod( 'change_proceed_to_checkout_button_text', false ) ) { remove_action( 'woocommerce_proceed_to_checkout', 'woocommerce_button_proceed_to_checkout', 20 ); add_action( 'woocommerce_proceed_to_checkout', 'beetan_button_proceed_to_checkout', 20 ); } // Remove cart page cross-sells from default position remove_action( 'woocommerce_cart_collaterals', 'woocommerce_cross_sell_display' ); // Cart cross-sell if ( get_theme_mod( 'enable_cart_cross_sells', true ) ) { // Add cart page cross-sells UNDER the cart table if ( 'layout-2' === get_theme_mod( 'shop_cart_layout', 'layout-1' ) && get_theme_mod( 'sticky_cart_totals' ) ) { add_action( 'woocommerce_after_cart_table', 'woocommerce_cross_sell_display' ); } else { add_action( 'woocommerce_after_cart', 'woocommerce_cross_sell_display' ); } // Cross-sells columns add_filter( 'woocommerce_cross_sells_columns', function ( $columns ) { return get_theme_mod( 'cart_cross_sells_columns', 3 ); } ); // Cross-sells products limit add_filter( 'woocommerce_cross_sells_total', function ( $limit ) { return get_theme_mod( 'cart_cross_sells_products_limit', 3 ); } ); } } /** * WooCommerce Before Content Wrapper. * * @return void */ public function woocommerce_wrapper_before() { echo '
'; if ( 'left_sidebar' == beetan_sidebar_layout() ) { get_sidebar(); } echo '
'; } /** * WooCommerce After Content Wrapper. * * @return void */ public function woocommerce_wrapper_after() { echo '
'; if ( 'right_sidebar' == beetan_sidebar_layout() ) { get_sidebar(); } echo '
'; } public function register_widgets() { register_sidebar( array( 'name' => esc_html__( 'Shop Sidebar', 'beetan' ), 'id' => 'sidebar-product-archive', /* translators: widget description */ 'description' => sprintf( __( 'Add widgets here to show in single product page sidebar. Make sure you have enabled Sidebar layout by going to Appearance / Customizer / Sidebar Options.', 'beetan' ), esc_url( admin_url( 'customize.php?autofocus%5Bsection%5D=sidebar_settings_section' ) ) ), 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '

', 'after_title' => '

', ) ); register_sidebar( array( 'name' => esc_html__( 'Single Product Sidebar', 'beetan' ), 'id' => 'sidebar-product', /* translators: widget description */ 'description' => sprintf( __( 'Add widgets here to show in shop page sidebar. Make sure you have enabled Sidebar layout by going to Appearance / Customizer / Sidebar Options.', 'beetan' ), esc_url( admin_url( 'customize.php?autofocus%5Bsection%5D=sidebar_settings_section' ) ) ), 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '

', 'after_title' => '

', ) ); } /** * Related Products Args. * * @param array $args related products args. * * @return array $args related products args. */ public function related_products_args( $args ) { $shop_grid = get_option( 'woocommerce_catalog_columns', 4 ); $defaults = array( 'posts_per_page' => absint( $shop_grid ), 'columns' => absint( $shop_grid ), ); $args = wp_parse_args( $defaults, $args ); return $args; } /** * Cart Fragments. * * Ensure cart contents update when products are added to the cart via AJAX. * * @param $fragments * * @return mixed */ public function woocommerce_cart_link_fragment( $fragments ) { ob_start(); $this->woocommerce_cart_link(); $fragments['a.cart-contents'] = ob_get_clean(); return $fragments; } /** * Cart Link. * * Displayed a link to the cart including the number of items present and the cart total. * * @return void */ public function woocommerce_cart_link() { $item_count = WC()->cart->get_cart_contents_count(); ?> shopping_cart
  • woocommerce_cart_link(); ?>
    '', ); the_widget( 'WC_Widget_Cart', $instance ); ?>
  • get_free_shipping_min_amount(); $current_amount = WC()->cart->subtotal; if ( $current_amount < $min_amount ) { $remaining = $min_amount - $current_amount; $percent = 100 - ( $remaining / $min_amount ) * 100; printf( '
    ' . esc_html__( 'You\'re %s Away From FREE Shipping!', 'beetan' ) . '
    ', wc_price( $min_amount - $current_amount ), esc_attr( $percent . '%' ) ); } elseif ( $current_amount >= $min_amount ) { printf( '
    %s
    ', esc_html__( 'You Have Now FREE Shipping! 🎉', 'beetan' ) ); } } /** * Get free shipping minimum amount threshold */ public function get_free_shipping_min_amount() { $shipping_packages = WC()->cart->get_shipping_packages(); $shipping_package = reset( $shipping_packages ); $shipping_zone = wc_get_shipping_zone( $shipping_package ); $min_amount = null; foreach ( $shipping_zone->get_shipping_methods( true ) as $method ) { if ( $method->id === 'free_shipping' ) { $instance = isset( $method->instance_settings ) ? $method->instance_settings : null; $min_amount = isset( $instance['min_amount'] ) ? $instance['min_amount'] : null; } } return $min_amount; } } } Beetan_Woocommerce::instance();