File: /home/salamatk/.trash/woodmart1/inc/integrations/woocommerce/template-tags.php
<?php if ( ! defined( 'WOODMART_THEME_DIR' ) ) {
exit( 'No direct script access allowed' );
}
use XTS\Modules\Checkout_Order_Table;
use XTS\Modules\Layouts\Main as Builder;
use XTS\Modules\Layouts\Global_Data as Builder_Data;
use XTS\Modules\Quick_Buy\Main as Quick_Buy;
use XTS\Registry;
if ( ! function_exists( 'woodmart_add_wrapper_start_for_main_loop' ) ) {
/**
* Added wrapper in shop loop.
*
* @param string $content Loop start content.
* @return mixed|string
*/
function woodmart_add_wrapper_start_for_main_loop( $content ) {
if ( Builder::get_instance()->has_custom_layout( 'shop_archive' ) && ( ! function_exists( 'wcfm_is_store_page' ) || ! wcfm_is_store_page() ) ) {
return $content;
}
return '<div class="wd-products-element">' . $content;
}
add_filter( 'woocommerce_product_loop_start', 'woodmart_add_wrapper_start_for_main_loop', 5 );
}
if ( ! function_exists( 'woodmart_add_wrapper_end_for_main_loop_with_pagination' ) ) {
/**
* Added wrapper in shop loop.
*/
function woodmart_add_wrapper_end_for_main_loop_with_pagination() {
if ( ! wc_get_loop_prop( 'is_paginated' ) || ! woocommerce_products_will_display() ) {
return;
}
if ( Builder::get_instance()->has_custom_layout( 'shop_archive' ) && ( ! function_exists( 'wcfm_is_store_page' ) || ! wcfm_is_store_page() ) ) {
return;
}
echo '</div>';
}
add_action( 'woocommerce_after_shop_loop', 'woodmart_add_wrapper_end_for_main_loop_with_pagination', 99 );
}
if ( ! function_exists( 'woodmart_add_wrapper_end_for_main_loop_with_out_pagination' ) ) {
/**
* Added wrapper in shop loop.
*
* @return mixed|string
*/
function woodmart_add_wrapper_end_for_main_loop_with_out_pagination( $content ) {
if ( wc_get_loop_prop( 'is_paginated' ) && woocommerce_products_will_display() || ( Builder::get_instance()->has_custom_layout( 'shop_archive' ) && ( ! function_exists( 'wcfm_is_store_page' ) || ! wcfm_is_store_page() ) ) ) {
return $content;
}
return $content . '</div>';
}
add_filter( 'woocommerce_product_loop_end', 'woodmart_add_wrapper_end_for_main_loop_with_out_pagination' );
}
if ( ! function_exists( 'woodmart_font_icon_preload' ) ) {
function woodmart_font_icon_preload() {
$version = woodmart_get_theme_info( 'Version' );
$icon_font = woodmart_get_opt( 'icon_font', array( 'font' => '1', 'weight' => '400' ) );
$icon_font_name = 'woodmart-font';
if ( ! empty( $icon_font['font'] ) ) {
$icon_font_name .= '-' . $icon_font['font'];
}
if ( ! empty( $icon_font['weight'] ) ) {
$icon_font_name .= '-' . $icon_font['weight'];
}
?>
<?php if ( woodmart_get_opt( 'font_icon_woff2_preload' ) ) : ?>
<link rel="preload" as="font" href="<?php echo esc_url( WOODMART_THEME_DIR ); ?>/fonts/<?php echo esc_attr($icon_font_name ); ?>.woff2?v=<?php echo esc_attr( $version ); ?>" type="font/woff2" crossorigin>
<?php endif; ?>
<?php
}
add_action( 'wp_head', 'woodmart_font_icon_preload' );
}
/**
* ------------------------------------------------------------------------------------------------
* Custom function for product title
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woocommerce_template_loop_product_title' ) ) {
function woocommerce_template_loop_product_title() {
echo '<h3 class="wd-entities-title"><a href="' . get_the_permalink() . '">' . get_the_title() . '</a></h3>';
}
}
/**
* ------------------------------------------------------------------------------------------------
* Checkout steps in page title
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_checkout_steps' ) ) {
function woodmart_checkout_steps() {
woodmart_enqueue_inline_style( 'woo-mod-checkout-steps' );
?>
<ul class="wd-checkout-steps<?php echo woodmart_get_old_classes( ' woodmart-checkout-steps' ); ?>">
<li class="step-cart <?php echo ( is_cart() ) ? 'step-active' : 'step-inactive'; ?>">
<a href="<?php echo esc_url( wc_get_cart_url() ); ?>">
<span><?php esc_html_e( 'Shopping cart', 'woodmart' ); ?></span>
</a>
</li>
<li class="step-checkout <?php echo ( is_checkout() && ! is_order_received_page() ) ? 'step-active' : 'step-inactive'; ?>">
<a href="<?php echo esc_url( wc_get_checkout_url() ); ?>">
<span><?php esc_html_e( 'Checkout', 'woodmart' ); ?></span>
</a>
</li>
<li class="step-complete <?php echo ( is_order_received_page() ) ? 'step-active' : 'step-inactive'; ?>">
<span><?php esc_html_e( 'Order complete', 'woodmart' ); ?></span>
</li>
</ul>
<?php
}
}
/**
* ------------------------------------------------------------------------------------------------
* Custom thumbnail for category (wide items)
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_category_thumb_double_size' ) ) {
function woodmart_category_thumb_double_size( $category ) {
$size = woodmart_loop_prop( 'product_categories_image_size' );
$thumbnail_id = get_term_meta( $category->term_id, 'thumbnail_id', true );
if ( 'custom' === $size ) {
$custom_sizes = woodmart_loop_prop( 'product_categories_image_size_custom' );
} else {
$custom_sizes = woodmart_get_image_dimensions_by_size_key( $size );
}
if ( woodmart_loop_prop( 'double_size' ) ) {
if ( 'custom' === $size && is_array( $custom_sizes ) ) {
foreach ( $custom_sizes as $key => $custom_size ) {
if ( 'crop' === $key ) {
continue;
}
$custom_sizes[ $key ] *= 2;
}
} else {
$shop_catalog = wc_get_image_size( 'woocommerce_thumbnail' );
$width = (int) ( $shop_catalog['width'] * 2 );
$height = ( ! empty( $shop_catalog['height'] ) ) ? (int) ( $shop_catalog['height'] * 2 ) : '';
$size = 'custom';
$custom_sizes = array( $width, $height );
}
}
if ( $thumbnail_id ) {
echo woodmart_otf_get_image_html( $thumbnail_id, $size, $custom_sizes ); //phpcs:ignore
} else {
echo wp_kses( wc_placeholder_img( $size ), true );
}
}
}
/**
* ------------------------------------------------------------------------------------------------
* Product deal countdown
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_product_sale_countdown' ) ) {
function woodmart_product_sale_countdown( $settings = array(), $content = '' ) {
global $product;
$sale_date_end = get_post_meta( $product->get_id(), '_sale_price_dates_to', true );
$sale_date_start = get_post_meta( $product->get_id(), '_sale_price_dates_from', true );
if ( ( apply_filters( 'woodmart_sale_countdown_variable', false ) || woodmart_get_opt( 'sale_countdown_variable' ) ) && 'variable' === $product->get_type() ) {
// Variations cache.
$cache = apply_filters( 'woodmart_countdown_variable_cache', true );
$transient_name = 'woodmart_countdown_variable_cache_' . $product->get_id();
$available_variations = array();
if ( $cache ) {
$available_variations = get_transient( $transient_name );
}
if ( ! $available_variations ) {
$available_variations = $product->get_available_variations();
if ( $cache ) {
set_transient( $transient_name, $available_variations, apply_filters( 'woodmart_countdown_variable_cache_time', WEEK_IN_SECONDS ) );
}
}
if ( $available_variations ) {
$sale_date_end = get_post_meta( $available_variations[0]['variation_id'], '_sale_price_dates_to', true );
$sale_date_start = get_post_meta( $available_variations[0]['variation_id'], '_sale_price_dates_from', true );
}
}
$current_date = strtotime( date( 'Y-m-d H:i:s' ) ); // phpcs:ignore
if ( $sale_date_end < $current_date || $current_date < $sale_date_start ) {
return;
}
$timezone = 'GMT';
if ( apply_filters( 'woodmart_wp_timezone', false ) ) {
$timezone = wc_timezone_string();
}
woodmart_enqueue_js_library( 'countdown-bundle' );
woodmart_enqueue_js_script( 'countdown-element' );
woodmart_enqueue_inline_style( 'countdown' );
$wrapper_classes = woodmart_get_old_classes( ' woodmart-product-countdown woodmart-timer' );
if ( ( ! Builder::get_instance()->has_custom_layout( 'single_product' ) && ( 'wpb' === woodmart_get_current_page_builder() || 'elementor' === woodmart_get_current_page_builder() && ! woodmart_elementor_is_edit_mode() ) && is_single() && empty( $settings['timer_style'] ) ) || ( ! empty( $settings['products_hover'] ) && in_array( $settings['products_hover'], array( 'info', 'info-alt', 'alt', 'icons', 'quick', 'button', 'standard' ), true ) ) ) {
$wrapper_classes .= ' wd-style-standard';
}
if ( ! empty( $settings['timer_style'] ) ) {
$wrapper_classes .= ' wd-style-' . $settings['timer_style'];
}
if ( ! empty( $settings['woodmart_color_scheme'] ) ) {
$wrapper_classes .= ' color-scheme-' . $settings['woodmart_color_scheme'];
}
if ( ! empty( $settings['extra_class'] ) ) {
$wrapper_classes .= ' ' . $settings['extra_class'];
}
if ( $content ) {
echo wp_kses( $content, true ); //phpcs:ignore
}
?>
<?php if ( ! empty( $settings['title'] ) ) : ?>
<h4 class="wd-el-title title element-title">
<?php echo esc_html( $settings['title'] ); ?>
</h4>
<?php endif; ?>
<div class="wd-product-countdown wd-timer<?php echo esc_attr( $wrapper_classes ); ?>" data-end-date="<?php echo esc_attr( date( 'Y-m-d H:i:s', $sale_date_end ) ); ?>" data-timezone="<?php echo esc_attr( $timezone ); ?>">
<span class="wd-timer-days">
<span class="wd-timer-value">
0
</span>
<span class="wd-timer-text">
<?php esc_html_e( 'days', 'woodmart' ); ?>
</span>
</span>
<span class="wd-timer-hours">
<span class="wd-timer-value">
00
</span>
<span class="wd-timer-text">
<?php esc_html_e( 'hr', 'woodmart' ); ?>
</span>
</span>
<span class="wd-timer-min">
<span class="wd-timer-value">
00
</span>
<span class="wd-timer-text">
<?php esc_html_e( 'min', 'woodmart' ); ?>
</span>
</span>
<span class="wd-timer-sec">
<span class="wd-timer-value">
00
</span>
<span class="wd-timer-text">
<?php esc_html_e( 'sc', 'woodmart' ); ?>
</span>
</span>
</div>
<?php
// phpcs:enable
}
}
if ( ! function_exists( 'woodmart_clear_countdown_variable_cache' ) ) {
function woodmart_clear_countdown_variable_cache( $post_id ) {
if ( ! apply_filters( 'woodmart_countdown_variable_cache', true ) ) {
return;
}
$transient_name = 'woodmart_countdown_variable_cache_' . $post_id;
delete_transient( $transient_name );
}
add_action( 'save_post', 'woodmart_clear_countdown_variable_cache' );
}
/**
* ------------------------------------------------------------------------------------------------
* Hover image
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_hover_image' ) ) {
function woodmart_hover_image() {
global $product;
$attachment_ids = $product->get_gallery_image_ids();
$hover_image = '';
if ( ! empty( $attachment_ids[0] ) ) {
$hover_image = woodmart_get_product_thumbnail( 'woocommerce_thumbnail', $attachment_ids[0] );
}
if ( $hover_image != '' && woodmart_get_opt( 'hover_image' ) ) :
?>
<div class="hover-img">
<a href="<?php echo esc_url( get_permalink() ); ?>" aria-label="<?php esc_html_e( 'Product image', 'woodmart' ); ?>">
<?php echo woodmart_get_product_thumbnail( 'woocommerce_thumbnail', $attachment_ids[0] ); ?>
</a>
</div>
<?php
endif;
}
}
add_action( 'woocommerce_before_main_content', 'woodmart_woo_wrapper_start', 10 );
add_action( 'woocommerce_after_main_content', 'woodmart_woo_wrapper_end', 10 );
if ( ! function_exists( 'woodmart_woo_wrapper_start' ) ) {
function woodmart_woo_wrapper_start() {
$classes = ' wd-grid-col';
$content_inline_style = ' style="' . woodmart_get_content_inline_style() . '"';
if ( ! woodmart_has_sidebar_in_page() || ( is_shop() || is_product_taxonomy() ) && Builder::get_instance()->has_custom_layout( 'shop_archive' ) || is_singular( 'product' ) && ( ! woodmart_get_opt( 'full_height_sidebar' ) || 'full-width' === woodmart_get_opt( 'single_product_layout', 'full-width' ) ) ) {
$classes = '';
$content_inline_style = '';
if ( ( is_shop() || is_product_taxonomy() ) && Builder::get_instance()->has_custom_layout( 'shop_archive' ) ) {
$classes = ' entry-content';
}
}
echo '<div class="wd-content-area site-content' . esc_attr( $classes ) . '"' . wp_kses( $content_inline_style, true ) . '>';
}
}
if ( ! function_exists( 'woodmart_woo_wrapper_end' ) ) {
function woodmart_woo_wrapper_end() {
echo '</div>';
}
}
/**
* ------------------------------------------------------------------------------------------------
* My account sidebar
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_before_my_account_navigation' ) ) {
function woodmart_before_my_account_navigation() {
echo '<div class="wd-my-account-sidebar' . woodmart_get_old_classes( ' woodmart-my-account-sidebar' ) . '">';
if ( ! function_exists( 'woodmart_my_account_title' ) ) {
?>
<h3 class="woocommerce-MyAccount-title entry-title">
<?php echo get_the_title( wc_get_page_id( 'myaccount' ) ); ?>
</h3>
<?php
}
}
add_action( 'woocommerce_account_navigation', 'woodmart_before_my_account_navigation', 5 );
}
if ( ! function_exists( 'woodmart_after_my_account_navigation' ) ) {
function woodmart_after_my_account_navigation() {
$sidebar_name = 'sidebar-my-account';
if ( is_active_sidebar( $sidebar_name ) ) :
?>
<aside class="wd-sidebar sidebar-container">
<div class="widget-area">
<?php dynamic_sidebar( $sidebar_name ); ?>
</div>
</aside>
<?php
endif;
echo '</div>';
}
add_action( 'woocommerce_account_navigation', 'woodmart_after_my_account_navigation', 30 );
}
/**
* ------------------------------------------------------------------------------------------------
* Extra content block
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_product_extra_content' ) ) {
function woodmart_product_extra_content( $tabs ) {
$extra_block = get_post_meta( get_the_ID(), '_woodmart_extra_content', true );
$extra_position = get_post_meta( get_the_ID(), '_woodmart_extra_position', true );
if ( ! $extra_position ) {
$extra_position = 'after';
}
echo '<div class="product-extra-content wd-location-' . esc_attr( $extra_position ) . '">' . woodmart_html_block_shortcode( array( 'id' => $extra_block ) ) . '</div>'; //phpcs:ignore
}
}
/**
* ------------------------------------------------------------------------------------------------
* Product video, zoom buttons
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_product_video_button' ) ) {
function woodmart_product_video_button() {
$video_url = get_post_meta( get_the_ID(), '_woodmart_product_video', true );
woodmart_enqueue_js_library( 'magnific' );
woodmart_enqueue_js_script( 'product-video' );
woodmart_enqueue_inline_style( 'mfp-popup' );
?>
<div class="product-video-button wd-gallery-btn wd-action-btn wd-style-icon-bg-text wd-play-icon">
<a href="<?php echo esc_url( $video_url ); ?>"><span><?php esc_html_e( 'Watch video', 'woodmart' ); ?></span></a>
</div>
<?php
}
}
if ( ! function_exists( 'woodmart_product_zoom_button' ) ) {
function woodmart_product_zoom_button() {
woodmart_enqueue_js_library( 'photoswipe-bundle' );
woodmart_enqueue_inline_style( 'photoswipe' );
woodmart_enqueue_js_script( 'product-images' );
?>
<div class="wd-show-product-gallery-wrap wd-action-btn wd-style-icon-bg-text wd-gallery-btn"><a href="#" rel="nofollow" class="woodmart-show-product-gallery"><span><?php esc_html_e( 'Click to enlarge', 'woodmart' ); ?></span></a></div>
<?php
}
}
if ( ! function_exists( 'woodmart_additional_galleries_open' ) ) {
function woodmart_additional_galleries_open() {
?>
<div class="product-additional-galleries">
<?php
}
}
if ( ! function_exists( 'woodmart_additional_galleries_close' ) ) {
function woodmart_additional_galleries_close() {
?>
</div>
<?php
}
}
/**
* ------------------------------------------------------------------------------------------------
* Single product share buttons
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_product_share_buttons' ) ) {
function woodmart_product_share_buttons() {
$type = woodmart_get_opt('product_share_type' );
$product_design = woodmart_product_design();
$align = 'center';
if ( 'default' === $product_design || woodmart_loop_prop( 'is_quick_view' ) ) {
if ( is_rtl() ) {
$align = 'right';
} else {
$align = 'left';
}
}
if ( woodmart_is_social_link_enable( $type ) ) {
echo woodmart_shortcode_social(
array(
'type' => $type,
'size' => 'small',
'align' => $align,
'show_label' => 'yes',
'el_class' => 'product-share wd-layout-inline',
'title_classes' => 'share-title',
'label_text' => 'share' === $type ? esc_html__('Share:', 'woodmart') : esc_html__('Follow:', 'woodmart'),
)
);
}
}
}
/**
* ------------------------------------------------------------------------------------------------
* Instagram by hashtag for products
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_product_instagram' ) ) {
function woodmart_product_instagram() {
$hashtag = get_post_meta( get_the_ID(), '_woodmart_product_hashtag', true );
if ( empty( $hashtag ) ) {
return;
}
?>
<div class="wd-product-instagram">
<p class="product-instagram-intro"><?php printf( wp_kses( __( 'Tag your photos with <span>%s</span> on Instagram.', 'woodmart' ), array( 'span' => array() ) ), $hashtag ); ?></p>
<?php
echo woodmart_shortcode_instagram(
array(
'username' => esc_html( $hashtag ),
'number' => 8,
'size' => 'medium',
'target' => '_blank',
'spacing' => 0,
'rounded' => 0,
'per_row' => 4,
'data_source' => 'ajax',
)
);
?>
</div>
<?php
}
}
/**
* ------------------------------------------------------------------------------------------------
* Filters buttons
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_filter_buttons' ) ) {
function woodmart_filter_buttons( $args = array() ) {
$filters_type = woodmart_get_opt( 'shop_filters_type' ) ? woodmart_get_opt( 'shop_filters_type' ) : 'widgets';
$always_open = woodmart_get_opt( 'shop_filters_always_open' );
$classes = woodmart_get_old_classes( ' woodmart-filter-buttons' );
$wrapper_attr = '';
if ( ( ! woocommerce_products_will_display() && 'widgets' === $filters_type ) || $always_open || ( 'content' === $filters_type && ! woodmart_get_opt( 'shop_filters_content' ) ) || ( ! woodmart_get_opt( 'shop_filters' ) && ! Builder::get_instance()->has_custom_layout( 'shop_archive' ) ) ) {
return;
}
if ( ! empty( $args['classes'] ) ) {
$classes .= ' ' . $args['classes'];
}
if ( ! empty( $args['id'] ) ) {
$wrapper_attr .= ' id="' . $args['id'] . '"';
}
?>
<div class="wd-filter-buttons wd-action-btn wd-style-text<?php echo esc_attr( $classes ); ?>"<?php echo wp_kses( $wrapper_attr, true ); ?>>
<a href="#" rel="nofollow" class="open-filters"><?php esc_html_e( 'Filters', 'woodmart' ); ?></a>
</div>
<?php
}
}
if ( ! function_exists( 'woodmart_sorting_widget' ) ) {
function woodmart_sorting_widget() {
the_widget(
'WOODMART_Widget_Sorting',
array( 'title' => esc_html__( 'Sort by', 'woodmart' ) ),
array(
'before_widget' => '<div id="WOODMART_Widget_Sorting" class="wd-widget widget filter-widget wd-col woodmart-woocommerce-sort-by">',
'after_widget' => '</div>',
'before_title' => '<' . woodmart_get_widget_title_tag() . ' class="widget-title">',
'after_title' => '</' . woodmart_get_widget_title_tag() . '>',
)
);
}
}
if ( ! function_exists( 'woodmart_price_widget' ) ) {
function woodmart_price_widget() {
the_widget(
'WOODMART_Widget_Price_Filter',
array( 'title' => esc_html__( 'Price filter', 'woodmart' ) ),
array(
'before_widget' => '<div id="WOODMART_Widget_Price_Filter" class="wd-widget widget filter-widget wd-col woodmart-price-filter">',
'after_widget' => '</div>',
'before_title' => '<' . woodmart_get_widget_title_tag() . ' class="widget-title">',
'after_title' => '</' . woodmart_get_widget_title_tag() . '>',
)
);
}
}
/**
* ------------------------------------------------------------------------------------------------
* Empty cart text
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_empty_cart_text' ) ) {
add_action( 'woocommerce_cart_is_empty', 'woodmart_empty_cart_text', 20 );
function woodmart_empty_cart_text() {
$empty_cart_text = woodmart_get_opt( 'empty_cart_text' );
if ( ! empty( $empty_cart_text ) ) {
?>
<div class="wd-empty-page-text">
<?php
echo wp_kses(
$empty_cart_text,
array(
'p' => array(),
'h1' => array(),
'h2' => array(),
'h3' => array(),
'strong' => array(),
'em' => array(),
'span' => array(),
'div' => array(),
'br' => array(),
)
);
?>
</div>
<?php
}
}
}
/**
* ------------------------------------------------------------------------------------------------
* Wrap shop tables with divs
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_open_table_wrapper_div' ) ) {
function woodmart_open_table_wrapper_div() {
$classes = Checkout_Order_Table::get_instance()->is_enable_woodmart_product_table_template() ? ' wd-manage-on' : '';
ob_start();
?>
<div class="wd-table-wrapper<?php echo esc_html( $classes ); ?>">
<?php
echo ob_get_clean(); // phpcs:ignore.
}
add_action( 'woocommerce_checkout_order_review', 'woodmart_open_table_wrapper_div', 7 );
}
if ( ! function_exists( 'woodmart_close_table_wrapper_div' ) ) {
function woodmart_close_table_wrapper_div() {
echo '</div>';
}
add_action( 'woocommerce_checkout_order_review', 'woodmart_close_table_wrapper_div', 13 );
}
// **********************************************************************//
// ! Items per page select on the shop page
// **********************************************************************//
if ( ! function_exists( 'woodmart_show_sidebar_btn' ) ) {
add_action( 'woocommerce_before_shop_loop', 'woodmart_show_sidebar_btn', 25 );
function woodmart_show_sidebar_btn() {
if ( Builder::get_instance()->has_custom_layout( 'single_product' ) || wc_get_loop_prop( 'is_shortcode' ) || ! wc_get_loop_prop( 'is_paginated' ) || ( ! woodmart_get_opt( 'shop_hide_sidebar' ) && ! woodmart_get_opt( 'shop_hide_sidebar_tablet' ) && ! woodmart_get_opt( 'shop_hide_sidebar_desktop' ) && ! woodmart_get_opt( 'hide_main_sidebar_mobile' ) ) ) {
return;
}
if ( function_exists( 'wcfm_is_store_page' ) && wcfm_is_store_page() ) {
return;
}
woodmart_enqueue_js_script( 'hidden-sidebar' );
?>
<div class="wd-show-sidebar-btn wd-action-btn wd-style-text wd-burger-icon<?php echo woodmart_get_old_classes( ' woodmart-show-sidebar-btn' ); ?>">
<a href="#" rel="nofollow"><?php esc_html_e( 'Show sidebar', 'woodmart' ); ?></a>
</div>
<?php
}
}
if ( ! function_exists( 'woodmart_products_per_page_select' ) ) {
function woodmart_products_per_page_select( $is_element = false, $settings = false ) {
if ( ! wc_get_loop_prop( 'is_paginated' ) || ! woocommerce_products_will_display() || ( ! woodmart_get_opt( 'per_page_links' ) && ! Builder::get_instance()->has_custom_layout( 'shop_archive' ) ) ) {
return;
}
$per_page_options = ! empty( $settings['per_page_options'] ) ? $settings['per_page_options'] : woodmart_get_opt( 'per_page_options' );
$products_per_page_options = ! empty( $per_page_options ) ? explode( ',', $per_page_options ) : array( 12, 24, 36, -1 );
?>
<div class="wd-products-per-page<?php echo woodmart_get_old_classes( ' woodmart-products-per-page' ); ?>">
<span class="wd-label per-page-title">
<?php esc_html_e( 'Show', 'woodmart' ); ?>
</span>
<?php foreach ( $products_per_page_options as $key => $value ) : ?>
<?php
$classes = '';
$args = array(
'per_page' => $value,
);
if ( $is_element ) {
$args['shortcode'] = true;
}
$link = add_query_arg( $args, woodmart_shop_page_link( true ) );
if ( ( (int) woodmart_get_products_per_page() === (int) $value && ! $is_element ) || ( $is_element && isset( $_GET['per_page'] ) && $_GET['per_page'] === $value ) ) { // phpcs:ignore
$classes .= ' current-variation';
}
?>
<a rel="nofollow noopener" href="<?php echo esc_url( $link ); ?>" class="per-page-variation<?php echo esc_attr( $classes ); ?>">
<span>
<?php
$text = '%s';
esc_html( printf( $text, $value == -1 ? esc_html__( 'All', 'woodmart' ) : $value ) );
?>
</span>
</a>
<span class="per-page-border"></span>
<?php endforeach; ?>
</div>
<?php
}
add_action( 'woocommerce_before_shop_loop', 'woodmart_products_per_page_select', 25 );
}
if ( ! function_exists( 'woodmart_products_view_select' ) ) {
function woodmart_products_view_select( $is_element = false, $settings = false ) {
if ( ! wc_get_loop_prop( 'is_paginated' ) || ! woocommerce_products_will_display() ) {
return;
}
$shop_view = woodmart_get_opt( 'shop_view' );
$per_row_selector = isset( $settings['products_columns_variations'] ) ? '1' : woodmart_get_opt( 'per_row_columns_selector' );
$per_row_options = isset( $settings['products_columns_variations'] ) ? $settings['products_columns_variations'] : woodmart_get_opt( 'products_columns_variations' );
$current_shop_view = isset( $settings['products_view'] ) ? $settings['products_view'] : woodmart_get_shop_view();
$current_per_row = isset( $settings['products_columns'] ) ? $settings['products_columns'] : woodmart_get_products_columns_per_row();
$products_per_row_options = ( ! empty( $per_row_options ) ) ? array_unique( $per_row_options ) : array( 2, 3, 4 );
if ( ! Builder::get_instance()->has_custom_layout( 'shop_archive' ) && ( 'list' === $shop_view || ( 'grid' === $shop_view && ! $per_row_selector ) || ( 'grid' === $shop_view && ! $per_row_options ) ) ) {
return;
}
?>
<div class="wd-products-shop-view<?php echo woodmart_get_old_classes( ' woodmart-products-shop-view' ); ?> <?php echo esc_attr( 'products-view-' . $shop_view ); ?>">
<?php if ( 'grid' !== $shop_view || ( isset( $settings['products_columns_variations'] ) && in_array( 'list', $settings['products_columns_variations'], true ) ) ) : ?>
<?php
$classes = '';
$args = array(
'shop_view' => 'list',
);
if ( $is_element ) {
$args['shortcode'] = true;
}
if ( ( 'list' === $current_shop_view && ! $is_element ) || ( $is_element && isset( $_GET['shop_view'] ) && 'list' === $_GET['shop_view'] ) ) { // phpcs:ignore
$classes .= ' current-variation';
}
$link = add_query_arg( $args, woodmart_shop_page_link( true ) );
?>
<a rel="nofollow noopener" href="<?php echo esc_url( $link ); ?>" class="shop-view per-row-list<?php echo esc_attr( $classes ); ?>" aria-label="<?php esc_attr_e( 'List view', 'woodmart' ); ?>"></a>
<?php endif ?>
<?php if ( $per_row_selector && $per_row_options ) : ?>
<?php foreach ( $products_per_row_options as $key => $value ) : ?>
<?php
if ( 0 === $value || 'list' === $value ) {
continue;
}
$classes = '';
$args = array(
'shop_view' => 'grid',
'per_row' => $value,
);
if ( $is_element ) {
$args['shortcode'] = true;
}
if ( 'list' !== $current_shop_view && ( (int) $value === (int) $current_per_row && ! $is_element ) || ( $is_element && isset( $_GET['per_row'] ) && $_GET['per_row'] === $value ) ) { // phpcs:ignore
$classes .= ' current-variation';
}
$classes .= ' per-row-' . $value;
$link = add_query_arg( $args, woodmart_shop_page_link( true ) );
?>
<?php /* translators: %s: Grid view value */ ?>
<a rel="nofollow noopener" href="<?php echo esc_url( $link ); ?>" class="shop-view<?php echo esc_attr( $classes ); ?>" aria-label="<?php echo esc_attr( sprintf( __( 'Grid view %s', 'woodmart' ), $value ) ); ?>"></a>
<?php endforeach; ?>
<?php endif ?>
</div>
<?php
}
add_action( 'woocommerce_before_shop_loop', 'woodmart_products_view_select', 27 );
}
/**
* ------------------------------------------------------------------------------------------------
* Display categories menu
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_product_categories_nav' ) ) {
/**
* Make query and render categories in navigation style.
*
* @param array|false $new_list_args Arguments list for wp_list_categories() function. Default = false.
* @see wp_list_categories() Render categoriel html.
* @return void
*/
function woodmart_product_categories_nav( $new_list_args = false, $settings = array() ) {
global $wp_query, $post;
$data_source = isset( $settings['data_source'] ) ? $settings['data_source'] : false;
$show_subcategories = false;
$product_count = woodmart_get_opt( 'shop_products_count' );
$category_images = true;
$mobile_categories_layout = isset( $settings['mobile_accordion'] ) ? $settings['mobile_accordion'] : woodmart_get_opt( 'mobile_categories_layout', 'accordion' );
$side_categories = array();
$mobile_categories_settings_keys = array(
'mobile_categories_menu_layout',
'mobile_categories_drilldown_animation',
'mobile_categories_submenu_opening_action',
'mobile_categories_position',
'mobile_categories_color_scheme',
'mobile_categories_close_btn',
);
foreach( $mobile_categories_settings_keys as $key ) {
$settings[ $key ] = isset( $settings[ $key ] ) ? $settings[ $key ] : woodmart_get_opt( $key );
$side_categories[ $key ] = $settings[ $key ];
}
if ( in_array( $mobile_categories_layout, array( 'yes', 'on' ), true ) ) {
$mobile_categories_layout = 'accordion'; // Normalize data from elements (product categories).
}
$side_categories['mobile_categories_layout'] = $mobile_categories_layout;
$settings['mobile_categories_layout'] = $mobile_categories_layout;
if ( isset( $settings['product_count'] ) ) {
$product_count = 'yes' === $settings['product_count'];
}
if ( isset( $settings['images'] ) && 'yes' !== $settings['images'] ) {
$category_images = false;
}
if ( 'custom_query' === $data_source && $new_list_args ) {
$list_args = $new_list_args;
} elseif ( 'wc_query' === $data_source || ! $data_source ) {
if ( isset( $settings['shop_categories_ancestors'] ) && ! empty( $settings['shop_categories_ancestors'] ) ) {
$show_subcategories = $settings['shop_categories_ancestors'];
} else {
$show_subcategories = woodmart_get_opt( 'shop_categories_ancestors' );
}
$show_subcategories = in_array( $show_subcategories, array( 'yes', '1', true ), true );
$hide_empty = isset( $settings['hide_empty'] ) ? $settings['hide_empty'] : woodmart_get_opt( 'shop_page_title_hide_empty_categories', false );
$hide_empty = in_array( $hide_empty, array( 'yes', '1', true ), true );
$settings['hide_empty'] = $hide_empty;
$side_categories['shop_categories_ancestors'] = $show_subcategories;
if ( isset( $settings['show_categories_neighbors'] ) && 'yes' === $settings['show_categories_neighbors'] ) {
$show_categories_neighbors = $settings['show_categories_neighbors'];
} else {
$show_categories_neighbors = woodmart_get_opt( 'show_categories_neighbors' );
}
$list_args = array(
'taxonomy' => 'product_cat',
'hide_empty' => $hide_empty,
);
$order_by = apply_filters( 'woodmart_product_categories_nav_order_by', 'menu_order' );
$order = apply_filters( 'woodmart_product_categories_nav_order', 'asc' );
if ( 'menu_order' === $order_by ) {
$list_args['menu_order'] = false;
$list_args['menu_order'] = $order;
} else {
$list_args['order'] = $order;
$list_args['orderby'] = $order_by;
}
// Setup Current Category.
$current_cat = false;
$cat_ancestors = array();
if ( is_tax( 'product_cat' ) ) {
$current_cat = $wp_query->queried_object;
$cat_ancestors = get_ancestors( $current_cat->term_id, 'product_cat' );
}
$list_args['depth'] = 5;
$list_args['child_of'] = 0;
$list_args['hierarchical'] = 1;
if ( woodmart_get_opt( 'shop_page_title_categories_exclude' ) ) {
$list_args['exclude'] = woodmart_get_opt( 'shop_page_title_categories_exclude' );
}
include_once WC()->plugin_path() . '/includes/walkers/class-product-cat-list-walker.php';
if ( is_object( $current_cat ) && ! get_term_children( $current_cat->term_id, 'product_cat' ) && $show_subcategories && ! $show_categories_neighbors ) {
if ( 'side-hidden' === $mobile_categories_layout ) {
Builder_Data::get_instance()->set_data( 'mobile_categories_is_empty', true );
}
return;
}
}
$list_args['mobile_categories_layout'] = $mobile_categories_layout;
if ( ! empty( $settings['mobile_categories_menu_layout'] ) ) {
$list_args['mobile_categories_menu_layout'] = $settings['mobile_categories_menu_layout'];
}
$list_args['title_li'] = '';
$list_args['show_count'] = $product_count;
$list_args['show_images'] = $category_images;
$list_args['walker'] = new WOODMART_Walker_Category();
$class = $product_count ? ' has-product-count' : ' hasno-product-count';
$class .= woodmart_get_old_classes( ' woodmart-product-categories' );
if ( 'accordion' === $mobile_categories_layout ) {
$class .= ' wd-mobile-' . $mobile_categories_layout;
}
if ( woodmart_is_shop_on_front() ) {
$shop_link = home_url();
} else {
$shop_link = get_post_type_archive_link( 'product' );
}
if ( 'side-hidden' === $mobile_categories_layout && ! empty( $side_categories ) ) {
$data_attrs = sprintf(
'data-side-categories=%s',
wp_json_encode( $side_categories )
);
} else {
$data_attrs = '';
}
woodmart_enqueue_inline_style( 'shop-title-categories' );
if ( 'side-hidden' === $mobile_categories_layout ) {
if ( 'dropdown' === $settings['mobile_categories_menu_layout'] ) {
woodmart_enqueue_inline_style( 'header-mobile-nav-dropdown' );
} elseif ( 'drilldown' === $settings['mobile_categories_menu_layout'] ) {
woodmart_enqueue_inline_style( 'header-mobile-nav-drilldown' );
if ( 'slide' === $settings['mobile_categories_drilldown_animation'] ) {
woodmart_enqueue_inline_style( 'header-mobile-nav-drilldown-slide' );
} elseif ( 'fade-in' === $settings['mobile_categories_drilldown_animation'] ) {
woodmart_enqueue_inline_style( 'header-mobile-nav-drilldown-fade-in' );
}
}
woodmart_enqueue_inline_style( 'woo-categories-loop-nav-mobile-side-hidden' );
woodmart_enqueue_js_script( 'mobile-navigation' );
woodmart_enqueue_js_script( 'categories-menu-side-hidden' );
} else {
woodmart_enqueue_js_script( 'categories-menu' );
}
?>
<?php if ( in_array( $mobile_categories_layout, array( 'accordion', 'side-hidden' ), true ) ) : ?>
<?php
$opener_categories_classes = woodmart_get_old_classes( ' woodmart-show-categories' );
if ( 'side-hidden' === $mobile_categories_layout ) {
$opener_categories_classes .= ' wd-burger-icon';
}
?>
<div class="wd-btn-show-cat wd-action-btn wd-style-text<?php echo esc_attr( $opener_categories_classes ); ?>">
<a href="#" rel="nofollow">
<?php echo esc_html__( 'Categories', 'woodmart' ); ?>
</a>
</div>
<?php endif; ?>
<?php if ( 'side-hidden' === $mobile_categories_layout && ( $settings['mobile_categories_close_btn'] && 'no' !== $settings['mobile_categories_close_btn'] ) ) : ?>
<div class="wd-heading">
<div class="close-side-widget wd-action-btn wd-style-text wd-cross-icon">
<a href="#" rel="nofollow">
<?php esc_html_e( 'Close', 'woodmart' ); ?>
</a>
</div>
</div>
<?php endif; ?>
<ul class="wd-nav-product-cat wd-active wd-nav wd-gap-m wd-style-underline<?php echo esc_attr( $class ); ?>" <?php echo esc_attr( $data_attrs ); ?>>
<?php if ( apply_filters( 'woodmart_show_all_products_button_in_categories_nav', false ) ) : ?>
<li class="cat-link shop-all-link">
<a class="category-nav-link <?php echo 'side-hidden' === $mobile_categories_layout ? 'woodmart-nav-link' : ''; ?>" href="<?php echo esc_url( $shop_link ); ?>">
<span class="nav-link-summary<?php echo esc_attr( woodmart_get_old_classes( ' category-summary' ) ); ?>">
<span class="nav-link-text<?php echo esc_attr( woodmart_get_old_classes( ' category-name' ) ); ?>">
<?php echo esc_html__( 'All', 'woodmart' ); ?>
</span>
<span class="nav-link-count<?php echo esc_attr( woodmart_get_old_classes( ' category-products-count' ) ); ?>">
<?php echo esc_html__( 'products', 'woodmart' ); ?>
</span>
</span>
</a>
</li>
<?php endif; ?>
<?php if ( $show_subcategories ) : ?>
<?php woodmart_show_category_ancestors( $settings ); ?>
<?php else : ?>
<?php wp_list_categories( $list_args ); ?>
<?php endif; ?>
</ul>
<?php
}
}
/**
* ------------------------------------------------------------------------------------------------
* Display ancestors of current category
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_show_category_ancestors' ) ) {
function woodmart_show_category_ancestors($settings = false) {
global $wp_query, $post;
$product_count = woodmart_get_opt( 'shop_products_count' );
$category_images = true;
if ( isset( $settings['product_count'] ) ) {
$product_count = 'yes' === $settings['product_count'];
}
if ( isset( $settings['images'] ) && 'yes' !== $settings['images'] ) {
$category_images = false;
}
if ( isset( $settings['show_categories_neighbors'] ) && 'yes' === $settings['show_categories_neighbors'] ) {
$show_categories_neighbors = $settings['show_categories_neighbors'];
} else {
$show_categories_neighbors = woodmart_get_opt( 'show_categories_neighbors' );
}
$current_cat = false;
if ( is_tax( 'product_cat' ) ) {
$current_cat = $wp_query->queried_object;
}
$list_args = array(
'taxonomy' => 'product_cat',
'hide_empty' => isset( $settings['hide_empty'] ) ? $settings['hide_empty'] : woodmart_get_opt( 'shop_page_title_hide_empty_categories', false ),
);
// Show Siblings and Children Only
if ( $current_cat ) {
// Direct children are wanted
$include = get_terms(
'product_cat',
array(
'fields' => 'ids',
'parent' => $current_cat->term_id,
'hierarchical' => true,
'hide_empty' => false,
)
);
$list_args['include'] = implode( ',', $include );
if ( empty( $include ) && ! $show_categories_neighbors ) {
return;
}
if ( $show_categories_neighbors ) {
if ( get_term_children( $current_cat->term_id, 'product_cat' ) ) {
$list_args['child_of'] = $current_cat->term_id;
} elseif ( $current_cat->parent != 0 ) {
$list_args['child_of'] = $current_cat->parent;
}
}
}
$list_args['depth'] = 1;
$list_args['hierarchical'] = 1;
$list_args['title_li'] = '';
$list_args['pad_counts'] = 1;
$list_args['show_option_none'] = esc_html__( 'No product categories exist.', 'woodmart' );
$list_args['current_category'] = ( $current_cat ) ? $current_cat->term_id : '';
$list_args['show_count'] = $product_count;
$list_args['show_images'] = $category_images;
$list_args['mobile_categories_layout'] = $settings['mobile_categories_layout'];
$list_args['walker'] = new WOODMART_Walker_Category();
$order_by = apply_filters( 'woodmart_product_categories_nav_order_by', 'menu_order' );
$order = apply_filters( 'woodmart_product_categories_nav_order', 'asc' );
if ( 'menu_order' === $order_by ) {
$list_args['menu_order'] = false;
$list_args['menu_order'] = $order;
} else {
$list_args['order'] = $order;
$list_args['orderby'] = $order_by;
}
wp_list_categories( $list_args );
}
}
if ( ! class_exists( 'WOODMART_Walker_Category' ) ) {
class WOODMART_Walker_Category extends Walker_Category {
public function get_drilldown_back_button( $args, $tag = 'div' ) {
if ( 'side-hidden' !== $args['mobile_categories_layout'] || 'drilldown' !== $args['mobile_categories_menu_layout'] ) {
return '';
}
ob_start();
?>
<<?php echo $tag; ?> class="wd-drilldown-back">
<span class="wd-nav-opener"></span>
<a href="#">
<?php esc_html_e( 'Back', 'woodmart' ); ?>
</a>
</<?php echo $tag; ?>>
<?php
return ob_get_clean();
}
public function start_lvl( &$output, $depth = 0, $args = array() ) {
if ( 'list' !== $args['style'] ) {
return;
}
$sub_menu_class = 'wd-sub-menu';
$sub_menu_class .= woodmart_get_old_classes( ' sub-menu' );
$sub_menu_class .= ' wd-dropdown wd-dropdown-menu';
$indent = str_repeat( "\t", $depth );
$output .= $indent . '<ul class="children wd-design-default ' . esc_attr( $sub_menu_class ) . '">';
$output .= $this->get_drilldown_back_button( $args, 'li' );
}
public function end_lvl( &$output, $depth = 0, $args = array() ) {
if ( 'list' !== $args['style'] ) {
return;
}
$indent = str_repeat( "\t", $depth );
$output .= $indent . '</ul>';
}
public function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
/** This filter is documented in wp-includes/category-template.php */
$cat_name = apply_filters(
'list_cats',
esc_attr( $category->name ),
$category
);
// Don't generate an element if the category name is empty.
if ( ! $cat_name ) {
return;
}
$mobile_categories_link_classes = 'side-hidden' === $args['mobile_categories_layout'] ? ' woodmart-nav-link' : '';
$link = '<a class="category-nav-link' . $mobile_categories_link_classes . '" href="' . esc_url( get_term_link( $category ) ) . '" ';
$link .= '>';
$image_output = '';
$icon_data = get_term_meta( $category->term_id, 'category_icon', true );
if ( $icon_data && isset( $args['show_images'] ) && $args['show_images'] ) {
if ( is_array( $icon_data ) && $icon_data['id'] ) {
if ( woodmart_is_svg( $icon_data['url'] ) ) {
$image_output .= woodmart_get_svg_html( $icon_data['id'], apply_filters( 'woodmart_cat_menu_icon_size_svg', '40x40' ), array( 'class' => 'wd-nav-img' ) );
} else {
$image_output .= wp_get_attachment_image( $icon_data['id'], apply_filters( 'woodmart_cat_menu_icon_size', 'thumbnail' ), false, array( 'class' => 'wd-nav-img' ) );
}
} else {
if ( isset( $icon_data['url'] ) ) {
$icon_data = $icon_data['url'];
}
if ( $icon_data ) {
$image_output .= '<img src="' . esc_url( $icon_data ) . '" alt="' . esc_attr( $category->cat_name ) . '" class="wd-nav-img' . woodmart_get_old_classes( ' category-icon' ) . '" />';
}
}
}
$link .= $image_output;
$link .= '<span class="nav-link-summary' . woodmart_get_old_classes( ' category-summary' ) . '">';
$link .= '<span class="nav-link-text' . woodmart_get_old_classes( ' category-name' ) . '">' . $cat_name . '</span>';
if ( ! empty( $args['show_count'] ) ) {
$link .= '<span class="nav-link-count' . woodmart_get_old_classes( ' category-products-count' ) . '">' . number_format_i18n( $category->count ) . ' ' . _n( 'product', 'products', $category->count, 'woodmart' ) . '</span>';
}
$link .= '</span>';
$link .= '</a>';
if ( 'list' == $args['style'] ) {
$default_cat = get_option( 'default_product_cat' );
$output .= "\t<li";
$css_classes = array(
'cat-item',
'cat-item-' . $category->term_id,
( $category->term_id == $default_cat && apply_filters( 'woodmart_wc_default_product_cat', false ) ? 'wc-default-cat wd-hide' : '' ),
);
if ( 'side-hidden' === $args['mobile_categories_layout'] ) {
$css_classes[] = 'menu-item';
$css_classes[] = 'item-level-' . $depth;
}
if ( $args['walker']->has_children ) {
$css_classes[] = 'wd-event-hover';
if ( 'side-hidden' === $args['mobile_categories_layout'] ) {
$css_classes[] = 'menu-item-has-children';
}
}
if ( ! empty( $args['current_category'] ) ) {
// 'current_category' can be an array, so we use `get_terms()`.
$_current_terms = get_terms(
$category->taxonomy,
array(
'include' => $args['current_category'],
'hide_empty' => false,
)
);
foreach ( $_current_terms as $_current_term ) {
if ( $category->term_id == $_current_term->term_id ) {
$css_classes[] = 'wd-active';
} elseif ( $category->term_id == $_current_term->parent ) {
$css_classes[] = 'current-cat-parent';
}
while ( $_current_term->parent ) {
if ( $category->term_id == $_current_term->parent ) {
$css_classes[] = 'current-cat-ancestor';
break;
}
$_current_term = get_term( $_current_term->parent, $category->taxonomy );
}
}
}
/**
* Filter the list of CSS classes to include with each category in the list.
*
* @since 4.2.0
*
* @see wp_list_categories()
*
* @param array $css_classes An array of CSS classes to be applied to each list item.
* @param object $category Category data object.
* @param int $depth Depth of page, used for padding.
* @param array $args An array of wp_list_categories() arguments.
*/
$css_classes = implode( ' ', apply_filters( 'category_css_class', $css_classes, $category, $depth, $args ) );
$output .= ' class="' . $css_classes . '"';
$output .= ">$link\n";
} elseif ( isset( $args['separator'] ) ) {
$output .= "\t$link" . $args['separator'] . "\n";
} else {
$output .= "\t$link<br />\n";
}
}
public function display_element( $element, &$children_elements, $max_depth, $depth, $args, &$output ) {
if ( ! $element || ( 0 === $element->count && ! empty( $args[0]['hide_empty'] ) ) ) {
return;
}
parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );
}
}
}
if ( ! class_exists( 'WOODMART_WC_Product_Cat_List_Walker' ) && function_exists( 'WC' ) ) :
include_once WC()->plugin_path() . '/includes/walkers/class-product-cat-list-walker.php';
class WOODMART_WC_Product_Cat_List_Walker extends WC_Product_Cat_List_Walker {
/**
* Start the element output.
*
* @see Walker::start_el()
* @since 2.1.0
*
* @param string $output Passed by reference. Used to append additional content.
* @param int $depth Depth of category in reference to parents.
* @param integer $current_object_id
*/
public function start_el( &$output, $cat, $depth = 0, $args = array(), $current_object_id = 0 ) {
$output .= '<li class="cat-item cat-item-' . $cat->term_id;
if ( $args['current_category'] == $cat->term_id ) {
$output .= ' current-cat';
}
if ( $args['has_children'] && $args['hierarchical'] ) {
$output .= ' cat-parent';
}
if ( $args['current_category_ancestors'] && $args['current_category'] && in_array( $cat->term_id, $args['current_category_ancestors'] ) ) {
$output .= ' current-cat-parent';
}
$output .= '"><a href="' . get_term_link( (int) $cat->term_id, $this->tree_type ) . '">' . $cat->name . '</a>';
if ( $args['show_count'] ) {
$output .= ' <span class="count">' . $cat->count . '</span>';
}
}
}
endif;
/**
* ------------------------------------------------------------------------------------------------
* Show product categories
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_product_categories' ) ) {
function woodmart_product_categories() {
global $product;
if ( ! woodmart_get_opt( 'categories_under_title' ) ) {
return;
}
$terms = get_the_terms( $product->get_id(), 'product_cat' );
if ( ! $terms ) {
return;
}
$terms_array = array();
$parent = array();
$child = array();
$links = array();
foreach ( $terms as $term ) {
$terms_array[ $term->term_id ] = $term;
if ( ! $term->parent ) {
$parent[ $term->term_id ] = $term->name;
}
}
foreach ( $terms as $term ) {
if ( $term->parent ) {
unset( $parent[ $term->parent ] );
if ( array_key_exists( $term->parent, $terms_array ) ) {
$child[ $term->parent ] = get_term( $term->parent )->name;
}
$child[ $term->term_id ] = $term->name;
}
}
$terms = $child + $parent;
foreach ( $terms as $key => $value ) {
$links[] = '<a href="' . esc_url( get_term_link( $key ) ) . '" rel="tag">' . esc_html( $value ) . '</a>';
}
?>
<div class="wd-product-cats<?php echo woodmart_get_old_classes( ' woodmart-product-cats' ); ?>">
<?php echo implode( ', ', $links ); // phpcs:ignore ?>
</div>
<?php
}
}
/**
* ------------------------------------------------------------------------------------------------
* Function returns numbers of items in the cart. Filter woocommerce fragments
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_cart_data' ) ) {
add_filter( 'woocommerce_add_to_cart_fragments', 'woodmart_cart_data', 30 );
function woodmart_cart_data( $array ) {
ob_start();
woodmart_cart_count();
$count = ob_get_clean();
ob_start();
woodmart_cart_subtotal();
$subtotal = ob_get_clean();
if ( apply_filters( 'woodmart_update_fragments_fix', true ) ) {
$array['span.wd-cart-number_wd'] = $count;
$array['span.wd-cart-subtotal_wd'] = $subtotal;
} else {
$array['span.wd-cart-number'] = $count;
$array['span.wd-cart-subtotal'] = $subtotal;
}
return $array;
}
}
if ( ! function_exists( 'woodmart_cart_count' ) ) {
function woodmart_cart_count() {
if ( ! is_object( WC() ) || ! property_exists( WC(), 'cart' ) || ! is_object( WC()->cart ) || ! method_exists( WC()->cart, 'get_cart_contents_count' ) ) {
return;
}
$count = WC()->cart->get_cart_contents_count();
?>
<span class="wd-cart-number wd-tools-count<?php echo woodmart_get_old_classes( ' woodmart-cart-number' ); ?>"><?php echo esc_html( $count ); ?> <span><?php echo esc_html( _n( 'item', 'items', $count, 'woodmart' ) ); ?></span></span>
<?php
}
}
if ( ! function_exists( 'woodmart_cart_subtotal' ) ) {
function woodmart_cart_subtotal() {
if ( ! is_object( WC() ) || ! property_exists( WC(), 'cart' ) || ! is_object( WC()->cart ) || ! method_exists( WC()->cart, 'get_cart_subtotal' ) ) {
return;
}
?>
<span class="wd-cart-subtotal<?php echo woodmart_get_old_classes( ' woodmart-cart-subtotal' ); ?>"><?php echo WC()->cart->get_cart_subtotal(); ?></span>
<?php
}
}
/**
* ------------------------------------------------------------------------------------------------
* Woodmart product label
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_product_label' ) ) {
function woodmart_product_label() {
global $product;
$output = array();
$product_attributes = woodmart_get_product_attributes_label();
$percentage_label = woodmart_get_opt( 'percentage_label' );
if ( 'small' === woodmart_loop_prop( 'product_hover' ) ) {
return;
}
if ( $product->is_on_sale() ) {
$percentage = '';
if ( $product->get_type() == 'variable' && $percentage_label ) {
$available_variations = $product->get_variation_prices();
$max_percentage = 0;
foreach ( $available_variations['regular_price'] as $key => $regular_price ) {
$sale_price = $available_variations['sale_price'][ $key ];
if ( $sale_price < $regular_price ) {
$percentage = round( ( ( (float) $regular_price - (float) $sale_price ) / (float) $regular_price ) * 100 );
if ( $percentage > $max_percentage ) {
$max_percentage = $percentage;
}
}
}
$percentage = $max_percentage;
} elseif ( ( $product->get_type() == 'simple' || $product->get_type() == 'external' || $product->get_type() == 'variation' ) && $percentage_label ) {
$percentage = round( ( ( (float) $product->get_regular_price() - (float) $product->get_sale_price() ) / (float) $product->get_regular_price() ) * 100 );
}
if ( $percentage ) {
$output[] = '<span class="onsale product-label">' . sprintf( _x( '-%d%%', 'sale percentage', 'woodmart' ), $percentage ) . '</span>';
} else {
$output[] = '<span class="onsale product-label">' . esc_html__( 'Sale', 'woodmart' ) . '</span>';
}
}
if ( ! $product->is_in_stock() && 'thumbnail' === woodmart_get_opt( 'stock_status_position', 'thumbnail' ) ) {
$output[] = '<span class="out-of-stock product-label">' . esc_html__( 'Sold out', 'woodmart' ) . '</span>';
}
if ( $product->is_featured() && woodmart_get_opt( 'hot_label' ) ) {
$output[] = '<span class="featured product-label">' . esc_html__( 'Hot', 'woodmart' ) . '</span>';
}
if ( woodmart_get_opt( 'new_label' ) && woodmart_is_new_label_needed( get_the_ID() ) ) {
$output[] = '<span class="new product-label">' . esc_html__( 'New', 'woodmart' ) . '</span>';
}
if ( $product_attributes ) {
foreach ( $product_attributes as $attribute ) {
$output[] = $attribute;
}
}
$output = apply_filters( 'woodmart_product_label_output', $output );
if ( $output ) {
woodmart_enqueue_inline_style( 'woo-mod-product-labels' );
$shape = woodmart_get_opt( 'label_shape' );
if ( 'rectangular' === $shape ) {
woodmart_enqueue_inline_style( 'woo-mod-product-labels-rect' );
}
if ( 'rounded' === $shape ) {
woodmart_enqueue_inline_style( 'woo-mod-product-labels-round' );
}
echo '<div class="product-labels labels-' . $shape . '">' . implode( '', $output ) . '</div>';
}
}
}
add_filter( 'woocommerce_sale_flash', 'woodmart_product_label', 10 );
/**
* ------------------------------------------------------------------------------------------------
* Woodmart my account links
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_my_account_links' ) ) {
function woodmart_my_account_links() {
if ( ! woodmart_get_opt( 'my_account_links' ) ) {
return;
}
?>
<div class="wd-my-account-links wd-grid-g<?php echo woodmart_get_old_classes( ' woodmart-my-account-links' ); ?>">
<?php foreach ( wc_get_account_menu_items() as $endpoint => $label ) : ?>
<div class="<?php echo esc_attr( $endpoint ); ?>-link">
<a href="<?php echo esc_url( wc_get_account_endpoint_url( $endpoint ) ); ?>"><?php echo esc_html( $label ); ?></a>
</div>
<?php endforeach; ?>
</div>
<?php
}
add_action( 'woocommerce_account_dashboard', 'woodmart_my_account_links', 10 );
}
/**
* ------------------------------------------------------------------------------------------------
* My account wrapper
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_my_account_wrapp_start' ) ) {
function woodmart_my_account_wrapp_start() {
echo '<div class="woocommerce-my-account-wrapper">';
}
add_action( 'woocommerce_account_navigation', 'woodmart_my_account_wrapp_start', 1 );
}
if ( ! function_exists( 'woodmart_my_account_wrapp_end' ) ) {
function woodmart_my_account_wrapp_end() {
echo '</div>';
}
add_action( 'woocommerce_account_content', 'woodmart_my_account_wrapp_end', 10000 );
}
/**
* ------------------------------------------------------------------------------------------------
* Mini cart buttons
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_mini_cart_view_cart_btn' ) ) {
function woodmart_mini_cart_view_cart_btn() {
echo '<a href="' . esc_url( wc_get_cart_url() ) . '" class="button btn-cart wc-forward">' . esc_html__( 'View cart', 'woocommerce' ) . '</a>';
}
remove_action( 'woocommerce_widget_shopping_cart_buttons', 'woocommerce_widget_shopping_cart_button_view_cart', 10 );
add_action( 'woocommerce_widget_shopping_cart_buttons', 'woodmart_mini_cart_view_cart_btn', 10 );
}
/**
* ------------------------------------------------------------------------------------------------
* Attribute on product element
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_get_product_attributes_label' ) ) {
function woodmart_get_product_attributes_label() {
global $product;
$attributes = $product->get_attributes();
$output = array();
foreach ( $attributes as $attribute ) {
if ( ! isset( $attribute['name'] ) ) {
continue;
}
$show_attr_on_product = woodmart_wc_get_attribute_term( $attribute['name'], 'show_on_product' );
if ( $show_attr_on_product == 'on' ) {
$terms = wc_get_product_terms( $product->get_id(), $attribute['name'], array( 'fields' => 'all' ) );
foreach ( $terms as $term ) {
$content = esc_attr( $term->name );
$classes = 'label-term-' . $term->slug;
$classes .= ' label-attribute-' . $attribute['name'];
$image = get_term_meta( $term->term_id, 'image', true );
if ( $image && ! is_array( $image ) || ! empty( $image['id'] ) ) {
$classes .= ' label-with-img';
if ( is_array( $image ) && isset( $image['id'] ) ) {
$content = wp_get_attachment_image( $image['id'], 'woocommerce_thumbnail', false, array( 'title' => $term->slug ) );
} else {
$content = '<img src="' . esc_url( $image ) . '" title="' . esc_attr( $term->slug ) . '" alt="' . esc_attr( $term->slug ) . '" />';
}
}
$output[] = '<span class="attribute-label product-label ' . esc_attr( $classes ) . '">' . $content . '</span>';
}
}
}
return $output;
}
}
/**
* ------------------------------------------------------------------------------------------------
* Before add to cart text area
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_before_add_to_cart_area' ) ) {
function woodmart_before_add_to_cart_area() {
?>
<?php if ( woodmart_get_opt( 'content_before_add_to_cart' ) || woodmart_get_opt( 'before_add_to_cart_html_block' ) ) : ?>
<div class="wd-before-add-to-cart wd-entry-content">
<?php if ( 'text' === woodmart_get_opt( 'before_add_to_cart_content_type', 'text' ) ) : ?>
<?php echo do_shortcode( woodmart_get_opt( 'content_before_add_to_cart' ) ); ?>
<?php else : ?>
<?php echo woodmart_get_html_block( woodmart_get_opt( 'before_add_to_cart_html_block' ) ); ?>
<?php endif; ?>
</div>
<?php endif; ?>
<?php
}
add_action( 'woocommerce_single_product_summary', 'woodmart_before_add_to_cart_area', 25 );
}
/**
* ------------------------------------------------------------------------------------------------
* After add to cart text area
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_after_add_to_cart_area' ) ) {
function woodmart_after_add_to_cart_area() {
?>
<?php if ( woodmart_get_opt( 'content_after_add_to_cart' ) || woodmart_get_opt( 'after_add_to_cart_html_block' ) ) : ?>
<div class="wd-after-add-to-cart wd-entry-content">
<?php if ( 'text' === woodmart_get_opt( 'after_add_to_cart_content_type', 'text' ) ) : ?>
<?php echo do_shortcode( woodmart_get_opt( 'content_after_add_to_cart' ) ); ?>
<?php else : ?>
<?php echo woodmart_get_html_block( woodmart_get_opt( 'after_add_to_cart_html_block' ) ); ?>
<?php endif; ?>
</div>
<?php endif; ?>
<?php
}
add_action( 'woocommerce_single_product_summary', 'woodmart_after_add_to_cart_area', 31 );
}
/**
* ------------------------------------------------------------------------------------------------
* Clear all filters button
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_clear_filters_btn' ) ) {
function woodmart_clear_filters_btn() {
if ( ! woodmart_woocommerce_installed() ) {
return;
}
$url = woodmart_shop_page_link();
$_chosen_attributes = WC_Query::get_layered_nav_chosen_attributes();
if ( ! empty( $_GET['filter_product_brand'] ) ) {
$filter_product_brand = woodmart_clean( wp_unslash( $_GET['filter_product_brand'] ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
$_chosen_attributes['product_brand']['terms'] = array_map( 'sanitize_title', explode( ',', $filter_product_brand ) );
}
$min_price = isset( $_GET['min_price'] ) ? esc_attr( $_GET['min_price'] ) : '';
$max_price = isset( $_GET['max_price'] ) ? esc_attr( $_GET['max_price'] ) : '';
if ( 0 < count( $_chosen_attributes ) || $min_price || $max_price ) {
$reset_url = strtok( $url, '?' );
if ( isset( $_GET['post_type'] ) ) {
$reset_url = add_query_arg( 'post_type', wc_clean( wp_unslash( $_GET['post_type'] ) ), $reset_url );
}
?>
<div class="wd-clear-filters wd-action-btn wd-style-text wd-cross-icon">
<a href="<?php echo esc_url( $reset_url ); ?>"><?php echo esc_html__( 'Clear filters', 'woodmart' ); ?></a>
</div>
<?php
}
}
}
/**
* ------------------------------------------------------------------------------------------------
* Print shop page css from vc elements
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_sticky_single_add_to_cart' ) ) {
function woodmart_sticky_single_add_to_cart() {
global $product;
if ( ! $product || ! woodmart_woocommerce_installed() || ! is_product() || ! woodmart_get_opt( 'single_sticky_add_to_cart' ) ) {
return;
}
woodmart_enqueue_js_script( 'sticky-add-to-cart' );
woodmart_enqueue_inline_style( 'sticky-add-to-cart' );
if ( woodmart_get_opt( 'mobile_single_sticky_add_to_cart' ) ) {
woodmart_enqueue_inline_style( 'woo-mod-quantity-overlap' );
}
?>
<div class="wd-sticky-btn<?php echo woodmart_get_old_classes( ' woodmart-sticky-btn' ); ?>">
<div class="wd-sticky-btn-container container<?php echo woodmart_get_old_classes( ' woodmart-sticky-btn-container' ); ?>">
<div class="wd-sticky-btn-content<?php echo woodmart_get_old_classes( ' woodmart-sticky-btn-content' ); ?>">
<div class="wd-sticky-btn-thumbnail<?php echo woodmart_get_old_classes( ' woodmart-sticky-btn-thumbnail' ); ?>">
<?php echo woocommerce_get_product_thumbnail(); ?>
</div>
<div class="wd-sticky-btn-info<?php echo woodmart_get_old_classes( ' woodmart-sticky-btn-info' ); ?>">
<h4 class="wd-entities-title"><?php the_title(); ?></h4>
<?php echo wc_get_rating_html( $product->get_average_rating() ); ?>
</div>
</div>
<div class="wd-sticky-btn-cart<?php echo woodmart_get_old_classes( ' woodmart-sticky-btn-cart' ); ?>">
<span class="price"><?php echo wp_kses_post( $product->get_price_html() ); ?></span>
<?php if ( $product->is_type( 'simple' ) ) : ?>
<?php woocommerce_simple_add_to_cart(); ?>
<?php else : ?>
<a href="<?php echo esc_url( $product->add_to_cart_url() ); ?>" class="wd-sticky-add-to-cart button alt<?php echo woodmart_get_old_classes( ' woodmart-sticky-add-to-cart' ); ?>">
<?php echo true == $product->is_type( 'variable' ) ? esc_html__( 'Select options', 'woodmart' ) : $product->single_add_to_cart_text(); ?>
</a>
<?php Quick_Buy::get_instance()->output_quick_buy_button(); ?>
<?php endif; ?>
<?php do_action( 'woodmart_sticky_atc_actions' ); ?>
</div>
</div>
</div>
<?php
}
add_action( 'woodmart_before_wp_footer', 'woodmart_sticky_single_add_to_cart', 999 );
}
/**
* ------------------------------------------------------------------------------------------------
* Print shop page css from vc elements
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_shop_vc_css' ) ) {
function woodmart_shop_vc_css() {
if ( ! function_exists( 'wc_get_page_id' ) || (int) woodmart_get_the_ID() !== (int) wc_get_page_id( 'shop' ) ) {
return;
}
$shop_custom_css = get_post_meta( wc_get_page_id( 'shop' ), '_wpb_shortcodes_custom_css', true );
if ( ! empty( $shop_custom_css ) ) {
echo '<style class="test" data-type="vc_shortcodes-custom-css">' . $shop_custom_css . '</style>';
}
}
add_action( 'wp_head', 'woodmart_shop_vc_css', 1000 );
}
/**
* ------------------------------------------------------------------------------------------------
* Sticky sidebar button
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_sticky_sidebar_button' ) ) {
function woodmart_sticky_sidebar_button( $echo = true, $toolbar = false ) {
$sidebar_col = Registry::getInstance()->layout->get_sidebar_col_width();
$off_canvas_sidebar = Registry::getInstance()->layout->get_offcanvas_sidebar_classes();
$sticky_toolbar_fields = woodmart_get_opt( 'sticky_toolbar_fields' ) ? woodmart_get_opt( 'sticky_toolbar_fields' ) : array();
$sticky_toolbar = woodmart_get_opt( 'sticky_toolbar' );
$sticky_filter_button = $toolbar ? true : woodmart_get_opt( 'sticky_filter_button' );
$is_builder = Builder::get_instance()->has_custom_layout( 'shop_archive' ) || Builder::get_instance()->has_custom_layout( 'single_product' );
$is_shop = woodmart_woocommerce_installed() && ( is_shop() || is_product_category() || is_product_tag() || is_product_taxonomy() );
$classes = $toolbar ? 'wd-toolbar-sidebar wd-tools-element' . woodmart_get_old_classes( ' sticky-toolbar' ) : 'wd-sidebar-opener wd-action-btn wd-style-icon wd-burger-icon';
$label_classes = $toolbar ? 'wd-toolbar-label' : '';
if ( ( 0 === $sidebar_col && ! $is_builder ) || woodmart_maintenance_page() || is_singular( 'woodmart_slide' ) || is_singular( 'cms_block' ) || ( $sticky_toolbar && in_array( 'sidebar', $sticky_toolbar_fields, true ) && ! $toolbar && ! strpos( $off_canvas_sidebar, 'wd-sidebar-hidden-lg' ) ) || ( woodmart_is_elementor_installed() && woodmart_is_elementor_full_width( true ) ) ) {
return;
}
if ( function_exists( 'wcfm_is_store_page' ) && wcfm_is_store_page() ) {
return;
}
if ( $off_canvas_sidebar ) {
if ( $is_shop ) {
woodmart_enqueue_inline_style( 'shop-off-canvas-sidebar' );
}
$classes .= ! strpos( $off_canvas_sidebar, 'wd-sidebar-hidden-lg' ) ? ' wd-hide-lg' : '';
$classes .= ! strpos( $off_canvas_sidebar, 'wd-sidebar-hidden-md-sm' ) ? ' wd-hide-md-sm' : '';
$classes .= ! strpos( $off_canvas_sidebar, 'wd-sidebar-hidden-sm' ) ? ' wd-hide-sm' : '';
}
woodmart_enqueue_js_script( 'hidden-sidebar' );
woodmart_enqueue_js_script( 'sticky-sidebar-btn' );
$classes .= woodmart_get_old_classes( ' woodmart-sticky-sidebar-opener' );
if ( $is_shop && ! $toolbar ) {
$classes .= ' wd-show-on-scroll';
}
?>
<?php if ( $is_shop && ( ( ! Builder::get_instance()->has_custom_layout( 'shop_archive' ) && $sticky_filter_button && ( woodmart_get_opt( 'shop_hide_sidebar' ) || woodmart_get_opt( 'shop_hide_sidebar_tablet' ) ) ) || ( Builder::get_instance()->has_custom_layout( 'shop_archive' ) && ! empty( Builder_Data::get_instance()->get_data( 'wd_show_sticky_sidebar_button' ) ) && $toolbar ) ) ) : ?>
<?php woodmart_enqueue_inline_style( 'mod-sticky-sidebar-opener' ); ?>
<?php $classes .= woodmart_get_old_classes( ' shop-sidebar-opener' ); ?>
<div class="<?php echo esc_attr( $classes ); ?> wd-filter-icon">
<a href="#" rel="nofollow">
<?php if ( $toolbar ) : ?>
<span class="wd-tools-icon"></span>
<?php endif; ?>
<span class="<?php echo esc_attr( $label_classes ); ?>">
<?php esc_html_e( 'Filters', 'woodmart' ); ?>
</span>
</a>
</div>
<?php elseif ( ( ! $is_shop && $off_canvas_sidebar && ( ! is_singular( 'product' ) || ! Builder::get_instance()->has_custom_layout( 'single_product' ) ) ) || Builder::get_instance()->has_custom_layout( 'single_product' ) && ! empty( Builder_Data::get_instance()->get_data( 'wd_show_sticky_sidebar_button' ) ) && $toolbar ) : ?>
<?php woodmart_enqueue_inline_style( 'mod-sticky-sidebar-opener' ); ?>
<div class="<?php echo esc_attr( $classes ); ?>">
<a href="#" rel="nofollow">
<?php if ( $toolbar ) : ?>
<span class="wd-tools-icon"></span>
<?php endif; ?>
<span class="<?php echo esc_attr( $label_classes ); ?>">
<?php esc_html_e( 'Sidebar', 'woodmart' ); ?>
</span>
</a>
</div>
<?php endif; ?>
<?php
}
add_action( 'woodmart_before_wp_footer', 'woodmart_sticky_sidebar_button', 200 );
}
/**
* ------------------------------------------------------------------------------------------------
* Login to see add to cart and prices
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_hide_price_not_logged_in' ) ) {
function woodmart_hide_price_not_logged_in() {
if ( ! is_user_logged_in() && woodmart_get_opt( 'login_prices' ) ) {
add_filter( 'woocommerce_get_price_html', 'woodmart_print_login_to_see' );
add_filter( 'woocommerce_loop_add_to_cart_link', '__return_false' );
// Add to cart btns
remove_action( 'woodmart_add_loop_btn', 'woocommerce_template_loop_add_to_cart', 10 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
add_filter(
'woocommerce_structured_data_product',
function ( $markup ) {
unset( $markup['offers'] );
return $markup;
}
);
}
}
add_action( 'init', 'woodmart_hide_price_not_logged_in', 1200 );
}
if ( ! function_exists( 'woodmart_print_login_to_see' ) ) {
/**
* Get Login to see prices button.
*/
function woodmart_print_login_to_see() {
woodmart_enqueue_js_script( 'login-sidebar' );
return '<a href="' . esc_url( get_permalink( wc_get_page_id( 'myaccount' ) ) ) . '" class="login-to-prices-msg login-side-opener">' . esc_html__( 'Login to see prices', 'woodmart' ) . '</a>';
}
}
/**
* ------------------------------------------------------------------------------------------------
* Shop page filters and custom content
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_shop_filters_area' ) ) {
function woodmart_shop_filters_area( $args = array() ) {
$filters_type = woodmart_get_opt( 'shop_filters_type' ) ? woodmart_get_opt( 'shop_filters_type' ) : 'widgets';
$custom_content = woodmart_get_opt( 'shop_filters_content' );
$always_open = woodmart_get_opt( 'shop_filters_always_open' );
$filters_opened = ( ( woocommerce_products_will_display() && $filters_type == 'widgets' ) || ( $filters_type == 'content' && $custom_content ) ) && $always_open;
$classes = $filters_opened ? ' always-open' : '';
$classes .= $filters_type == 'content' && $custom_content ? ' custom-content' : '';
$wrapper_attrs = '';
if ( ! empty( $args['classes'] ) ) {
$classes .= ' ' . esc_attr( $args['classes'] );
}
if ( ! empty( $args['id'] ) ) {
$wrapper_attrs .= ' id="' . esc_attr( $args['id'] ) . '"';
}
woodmart_enqueue_js_script( 'filters-area' );
woodmart_enqueue_inline_style( 'shop-filter-area' );
if ( woodmart_get_opt( 'shop_filters' ) || Builder::get_instance()->has_custom_layout( 'shop_archive' ) ) {
if ( $filters_type == 'content' && ! $custom_content ) {
return;
}
echo '<div class="filters-area' . esc_attr( $classes ) . '"' . wp_kses( $wrapper_attrs, true ) . '>';
echo '<div class="filters-inner-area wd-grid-g" style="' . woodmart_get_widget_grid_attrs( $filters_type ) . '">';
if ( $filters_type == 'widgets' ) {
do_action( 'woodmart_before_filters_widgets' );
dynamic_sidebar( 'filters-area' );
do_action( 'woodmart_after_filters_widgets' );
} elseif ( $filters_type == 'content' && $custom_content ) {
echo do_shortcode( '[html_block id="' . esc_attr( $custom_content ) . '"]' );
}
echo '</div>';
echo '</div>';
}
}
add_action( 'woodmart_shop_filters_area', 'woodmart_shop_filters_area', 10 );
}
if ( ! function_exists( 'woodmart_get_header_links' ) ) {
function woodmart_get_header_links( $settings = false ) {
$links = array();
if ( ! woodmart_woocommerce_installed() ) {
return $links;
}
if ( ! $settings ) {
$settings = whb_get_settings();
}
$dropdowns_classes = '';
if ( 'light' === whb_get_dropdowns_color() ) {
$dropdowns_classes .= ' color-scheme-light';
}
$dropdowns_classes .= woodmart_get_old_classes( ' menu-item-register sub-menu-dropdown' );
$login_dropdown = isset( $settings ) && isset( $settings['login_dropdown'] ) && $settings['login_dropdown'] && ( ! $settings['form_display'] || $settings['form_display'] == 'dropdown' );
$links_with_username = isset( $settings['with_username'] ) && $settings['with_username'];
$account_link = wc_get_page_permalink( 'myaccount' );
$current_user = wp_get_current_user();
if ( is_user_logged_in() ) {
$links['my-account'] = array(
'label' => esc_html__( 'My Account', 'woodmart' ),
'url' => $account_link,
'dropdown' => '
<div class="wd-dropdown wd-dropdown-menu' . woodmart_get_old_classes( ' menu-item-my-account' ) . ' wd-dropdown-my-account wd-design-default' . $dropdowns_classes . '">
' . woodmart_get_my_account_menu() . '
</div>
',
'dropdown_mobile' => woodmart_get_my_account_menu( $settings ),
);
if ( $links_with_username ) {
$links['my-account']['label'] = sprintf( esc_html__( 'Hello, %s', 'woodmart' ), esc_html( $current_user->display_name ) );
}
} else {
$links['register'] = array(
'label' => esc_html__( 'Login / Register', 'woodmart' ),
'url' => $account_link,
);
if ( $login_dropdown && ! is_account_page() ) {
woodmart_enqueue_js_script( 'login-dropdown' );
woodmart_enqueue_inline_style( 'header-my-account-dropdown' );
$links['register']['dropdown'] = '
<div class="wd-dropdown wd-dropdown-register' . $dropdowns_classes . '">
<div class="login-dropdown-inner woocommerce">
<span class="wd-heading"><span class="title">' . esc_html__( 'Sign in', 'woodmart' ) . '</span><a class="create-account-link" href="' . esc_url( add_query_arg( 'action', 'register', $account_link ) ) . '">' . esc_html__( 'Create an Account', 'woodmart' ) . '</a>' . '</span>
' . woodmart_login_form( false, $account_link ) . '
</div>
</div>
';
}
}
return apply_filters( 'woodmart_get_header_links', $links );
}
}
// **********************************************************************//
// ! Add account links to the top bat menu
// **********************************************************************//
if ( ! function_exists( 'woodmart_topbar_links' ) ) {
function woodmart_topbar_links( $items = '', $args = array(), $return = false ) {
$is_mobile_menu = ! empty( $args ) && $args->theme_location == 'mobile-menu';
$login_side = '';
if ( $is_mobile_menu || $return ) {
$settings = whb_get_settings();
$show_wishlist = ( isset( $settings['wishlist'] ) && ! isset( $settings['burger']['show_wishlist'] ) ) || ! empty( $settings['burger']['show_wishlist'] );
$show_compare = ( isset( $settings['compare'] ) && ! isset( $settings['burger']['show_compare'] ) ) || ! empty( $settings['burger']['show_compare'] );
$show_account = ( isset( $settings['account'] ) && ! isset( $settings['burger']['show_account'] ) ) || ! empty( $settings['burger']['show_account'] );
$login_side = isset( $settings['account'] ) && $settings['account']['login_dropdown'] && $settings['account']['form_display'] == 'side';
if ( woodmart_get_opt( 'wishlist', 1 ) && $show_wishlist && $is_mobile_menu && ( ! woodmart_get_opt( 'wishlist_logged' ) || ( woodmart_get_opt( 'wishlist_logged' ) && is_user_logged_in() ) ) ) {
// Wishlist item firstly.
$items .= '<li class="menu-item menu-item-wishlist wd-with-icon item-level-0">';
$items .= woodmart_header_block_wishlist();
$items .= '</li>';
}
if ( woodmart_get_opt( 'compare' ) && $show_compare && $is_mobile_menu ) {
$items .= '<li class="menu-item menu-item-compare wd-with-icon item-level-0">';
$items .= '<a href="' . esc_url( woodmart_get_compare_page_url() ) . '" class="woodmart-nav-link">' . esc_html__( 'Compare', 'woodmart' ) . '</a>';
$items .= '</li>';
}
$links = woodmart_get_header_links();
if ( $show_account && $is_mobile_menu ) {
foreach ( $links as $key => $link ) {
$classes = '';
if ( ! is_user_logged_in() && $login_side ) {
woodmart_enqueue_js_script( 'login-sidebar' );
woodmart_enqueue_inline_style( 'header-my-account-sidebar' );
$classes .= ' login-side-opener';
}
if ( ! empty( $link['dropdown_mobile'] ) ) {
$classes .= ' menu-item-has-children';
}
$items .= '<li class="menu-item ' . $classes . ' menu-item-account wd-with-icon item-level-0">';
$items .= '<a href="' . esc_url( $link['url'] ) . '" class="woodmart-nav-link">' . wp_kses( $link['label'], 'default' ) . '</a>';
if ( ! empty( $link['dropdown_mobile'] ) && ! ( ! empty( $args ) && $args->theme_location == 'mobile-menu' && $key == 'register' ) ) {
$items .= $link['dropdown_mobile'];
}
$items .= '</li>';
}
}
}
return $items;
}
add_filter( 'wp_nav_menu_items', 'woodmart_topbar_links', 50, 2 );
}
if ( ! function_exists( 'woodmart_header_block_wishlist' ) ) {
function woodmart_header_block_wishlist() {
ob_start();
if ( woodmart_woocommerce_installed() && woodmart_get_opt( 'wishlist', 1 ) ) :
?>
<a href="<?php echo esc_url( woodmart_get_wishlist_page_url() ); ?>" class="woodmart-nav-link">
<span class="nav-link-text"><?php esc_html_e( 'Wishlist', 'woodmart' ); ?></span>
</a>
<?php
endif;
return ob_get_clean();
}
}
// **********************************************************************//
// ! My account menu
// **********************************************************************//
if ( ! function_exists( 'woodmart_get_my_account_menu' ) ) {
function woodmart_get_my_account_menu( $settings = array() ) {
$user_info = get_userdata( get_current_user_id() );
$user_roles = $user_info->roles;
$out = '<ul class="wd-sub-menu' . woodmart_get_old_classes( ' sub-menu' ) . '">';
if ( ! empty( $settings ) && ! empty( $settings['burger'] ) && ! empty( $settings['burger']['menu_layout'] ) && 'drilldown' === $settings['burger']['menu_layout'] ) {
ob_start();
?>
<li class="wd-drilldown-back">
<span class="wd-nav-opener"></span>
<a href="#">
<?php esc_html_e( 'Back', 'woodmart' ); ?>
</a>
</li>
<?php
$out .= ob_get_clean();
}
foreach ( wc_get_account_menu_items() as $endpoint => $label ) {
$out .= '<li class="' . wc_get_account_menu_item_classes( $endpoint ) . '"><a href="' . esc_url( wc_get_account_endpoint_url( $endpoint ) ) . '"><span>' . esc_html( $label ) . '</span></a></li>';
}
return $out . '</ul>';
}
}
// Fix mobile menu active class
add_filter(
'woocommerce_account_menu_item_classes',
function( $classes, $endpoint ) {
if ( ! is_account_page() && $endpoint == 'dashboard' ) {
$classes = array_diff( $classes, array( 'is-active' ) );
}
return $classes;
},
10,
2
);
// **********************************************************************//
// ! Add account links to the top bat menu
// **********************************************************************//
if ( ! function_exists( 'woodmart_add_logout_link' ) ) {
add_filter( 'wp_nav_menu_items', 'woodmart_add_logout_link', 10, 2 );
function woodmart_add_logout_link( $items = '', $args = array(), $return = false ) {
if ( ( ! empty( $args ) && $args->theme_location == 'header-account-menu' ) || $return ) {
$links = array();
$logout_link = wc_get_account_endpoint_url( 'customer-logout' );
$links['logout'] = array(
'label' => esc_html__( 'Logout', 'woodmart' ),
'url' => $logout_link,
);
if ( ! empty( $links ) ) {
foreach ( $links as $key => $link ) {
$items .= '<li id="menu-item-' . $key . '" class="menu-item item-event-hover menu-item-' . $key . '">';
$items .= '<a href="' . esc_url( $link['url'] ) . '">' . esc_attr( $link['label'] ) . '</a>';
$items .= '</li>';
}
}
}
return $items;
}
}
// **********************************************************************//
// ! Login form HTML for top bar menu dropdown
// **********************************************************************//
if ( ! function_exists( 'woodmart_login_form' ) ) {
function woodmart_login_form( $echo = true, $action = false, $message = false, $hidden = false, $redirect = false ) {
$vk_app_id = woodmart_get_opt( 'vk_app_id' );
$vk_app_secret = woodmart_get_opt( 'vk_app_secret' );
$fb_app_id = woodmart_get_opt( 'fb_app_id' );
$fb_app_secret = woodmart_get_opt( 'fb_app_secret' );
$goo_app_id = woodmart_get_opt( 'goo_app_id' );
$goo_app_secret = woodmart_get_opt( 'goo_app_secret' );
ob_start();
?>
<form method="post" class="login woocommerce-form woocommerce-form-login
<?php
if ( $hidden ) {
echo 'hidden-form';}
?>
" <?php echo ( ! empty( $action ) ) ? 'action="' . esc_url( $action ) . '"' : ''; ?> <?php
if ( $hidden ) {
echo 'style="display:none;"';}
?>
>
<?php do_action( 'woocommerce_login_form_start' ); ?>
<?php echo true == $message ? wpautop( wptexturize( $message ) ) : ''; ?>
<p class="woocommerce-FormRow woocommerce-FormRow--wide form-row form-row-wide form-row-username">
<label for="username"><?php esc_html_e( 'Username or email address', 'woocommerce' ); ?> <span class="required" aria-hidden="true">*</span><span class="screen-reader-text"><?php esc_html_e( 'Required', 'woocommerce' ); ?></span></label>
<input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="username" id="username" value="<?php echo ( ! empty( $_POST['username'] ) ) ? esc_attr( $_POST['username'] ) : ''; ?>" /><?php //@codingStandardsIgnoreLine ?>
</p>
<p class="woocommerce-FormRow woocommerce-FormRow--wide form-row form-row-wide form-row-password">
<label for="password"><?php esc_html_e( 'Password', 'woodmart' ); ?> <span class="required" aria-hidden="true">*</span><span class="screen-reader-text"><?php esc_html_e( 'Required', 'woocommerce' ); ?></span></label>
<input class="woocommerce-Input woocommerce-Input--text input-text" type="password" name="password" id="password" autocomplete="current-password" />
</p>
<?php do_action( 'woocommerce_login_form' ); ?>
<p class="form-row">
<?php wp_nonce_field( 'woocommerce-login', 'woocommerce-login-nonce' ); ?>
<?php if ( $redirect ) : ?>
<input type="hidden" name="redirect" value="<?php echo esc_url( $redirect ); ?>" />
<?php endif ?>
<button type="submit" class="button woocommerce-button woocommerce-form-login__submit<?php echo esc_attr( function_exists( 'wc_wp_theme_get_element_class_name') && wc_wp_theme_get_element_class_name( 'button' ) ? ' ' . wc_wp_theme_get_element_class_name( 'button' ) : '' ); ?>" name="login" value="<?php esc_attr_e( 'Log in', 'woodmart' ); ?>"><?php esc_html_e( 'Log in', 'woodmart' ); ?></button>
</p>
<p class="login-form-footer">
<a href="<?php echo esc_url( wp_lostpassword_url() ); ?>" class="woocommerce-LostPassword lost_password"><?php esc_html_e( 'Lost your password?', 'woodmart' ); ?></a>
<label class="woocommerce-form__label woocommerce-form__label-for-checkbox woocommerce-form-login__rememberme">
<input class="woocommerce-form__input woocommerce-form__input-checkbox" name="rememberme" type="checkbox" value="forever" title="<?php esc_attr_e( 'Remember me', 'woodmart' ); ?>" aria-label="<?php esc_attr_e( 'Remember me', 'woodmart' ); ?>" /> <span><?php esc_html_e( 'Remember me', 'woodmart' ); ?></span>
</label>
</p>
<?php if ( class_exists( 'WOODMART_Auth' ) && ( ( ! empty( $fb_app_id ) && ! empty( $fb_app_secret ) ) || ( ! empty( $goo_app_id ) && ! empty( $goo_app_secret ) ) || ( ! empty( $vk_app_id ) && ! empty( $vk_app_secret ) ) ) ) : ?>
<?php
$social_url = add_query_arg( array( 'social_auth' => '{{SOCIAL}}' ), wc_get_page_permalink( 'myaccount' ) );
if ( is_checkout() ) {
$social_url .= '&is_checkout=1';
}
woodmart_enqueue_inline_style( 'woo-opt-social-login' );
?>
<p class="title wd-login-divider<?php echo woodmart_get_old_classes( ' wood-login-divider' ); ?>"><span><?php esc_html_e( 'Or login with', 'woodmart' ); ?></span></p>
<div class="wd-social-login">
<?php if ( ! empty( $fb_app_id ) && ! empty( $fb_app_secret ) ) : ?>
<a href="<?php echo esc_url( str_replace( '{{SOCIAL}}', 'facebook', $social_url ) ); ?>" class="login-fb-link btn">
<?php esc_html_e( 'Facebook', 'woodmart' ); ?>
</a>
<?php endif ?>
<?php if ( ! empty( $goo_app_id ) && ! empty( $goo_app_secret ) ) : ?>
<a href="<?php echo esc_url( str_replace( '{{SOCIAL}}', 'google', $social_url ) ); ?>" class="login-goo-link btn">
<?php esc_html_e( 'Google', 'woodmart' ); ?>
</a>
<?php endif ?>
<?php if ( ! empty( $vk_app_id ) && ! empty( $vk_app_secret ) ) : ?>
<a href="<?php echo esc_url( str_replace( '{{SOCIAL}}', 'vkontakte', $social_url ) ); ?>" class="login-vk-link btn">
<?php esc_html_e( 'VKontakte', 'woodmart' ); ?>
</a>
<?php endif ?>
</div>
<?php endif ?>
<?php do_action( 'woocommerce_login_form_end' ); ?>
</form>
<?php
if ( $echo ) {
echo ob_get_clean();
} else {
return ob_get_clean();
}
}
}
// *****************************************************************************//
// ! OFF Wrappers elements: cart widget, search (full screen), header banner
// *****************************************************************************//
if ( ! function_exists( 'woodmart_cart_side_widget' ) ) {
function woodmart_cart_side_widget() {
if ( ! whb_is_side_cart() || ! woodmart_woocommerce_installed() || ( ! is_user_logged_in() && woodmart_get_opt( 'login_prices' ) ) ) {
return;
}
$wrapper_classes = '';
if ( 'light' === whb_get_dropdowns_color() ) {
$wrapper_classes .= ' color-scheme-light';
}
$position = is_rtl() ? 'left' : 'right';
$wrapper_classes .= ' wd-' . $position;
if ( woodmart_get_opt( 'mini_cart_quantity' ) ) {
woodmart_enqueue_inline_style( 'woo-mod-quantity' );
woodmart_enqueue_js_script( 'mini-cart-quantity' );
woodmart_enqueue_js_script( 'woocommerce-quantity' );
}
woodmart_enqueue_js_script( 'cart-widget' );
woodmart_enqueue_inline_style( 'widget-shopping-cart' );
woodmart_enqueue_inline_style( 'widget-product-list' );
?>
<div class="cart-widget-side wd-side-hidden<?php echo esc_attr( $wrapper_classes ); ?>">
<div class="wd-heading">
<span class="title"><?php esc_html_e( 'Shopping cart', 'woodmart' ); ?></span>
<div class="close-side-widget wd-action-btn wd-style-text wd-cross-icon">
<a href="#" rel="nofollow"><?php esc_html_e( 'Close', 'woodmart' ); ?></a>
</div>
</div>
<?php the_widget( 'WC_Widget_Cart', 'title=' ); ?>
</div>
<?php
}
add_action( 'woodmart_before_wp_footer', 'woodmart_cart_side_widget', 140 );
}
// **********************************************************************//
// Sidebar login form
// **********************************************************************//
if ( ! function_exists( 'woodmart_sidebar_login_form' ) ) {
function woodmart_sidebar_login_form() {
if ( ! woodmart_woocommerce_installed() || is_account_page() ) {
return;
}
$settings = whb_get_settings();
$login_side = isset( $settings['account'] ) && $settings['account']['login_dropdown'] && $settings['account']['form_display'] == 'side';
$account_link = get_permalink( get_option( 'woocommerce_myaccount_page_id' ) );
$page_id = woodmart_get_the_ID() ? woodmart_get_the_ID() : get_option( 'woocommerce_myaccount_page_id' );
$redirect_url = apply_filters( 'woodmart_my_account_side_login_form_redirect', get_permalink( $page_id ) );
$action_url = apply_filters( 'woodmart_my_account_side_login_form_action', wc_get_page_permalink( 'myaccount' ) );
$wrapper_classes = '';
if ( 'light' === whb_get_dropdowns_color() ) {
$wrapper_classes .= ' color-scheme-light';
}
$position = is_rtl() ? 'left' : 'right';
$wrapper_classes .= ' wd-' . $position;
if ( ! $login_side || is_user_logged_in() ) {
return;
}
woodmart_enqueue_inline_style( 'header-my-account-sidebar' );
woodmart_enqueue_inline_style( 'woo-mod-login-form' );
?>
<div class="login-form-side wd-side-hidden woocommerce<?php echo esc_attr( $wrapper_classes ); ?>">
<div class="wd-heading">
<span class="title"><?php esc_html_e( 'Sign in', 'woodmart' ); ?></span>
<div class="close-side-widget wd-action-btn wd-style-text wd-cross-icon">
<a href="#" rel="nofollow"><?php esc_html_e( 'Close', 'woodmart' ); ?></a>
</div>
</div>
<?php if ( ! is_checkout() ) : ?>
<?php woocommerce_output_all_notices(); ?>
<?php endif; ?>
<?php woodmart_login_form( true, $action_url, false, true, $redirect_url ); ?>
<div class="create-account-question">
<p><?php esc_html_e( 'No account yet?', 'woodmart' ); ?></p>
<a href="<?php echo esc_url( add_query_arg( 'action', 'register', $account_link ) ); ?>" class="btn create-account-button"><?php esc_html_e( 'Create an Account', 'woodmart' ); ?></a>
</div>
</div>
<?php
}
add_action( 'woodmart_before_wp_footer', 'woodmart_sidebar_login_form', 160 );
}
// **********************************************************************//
// ! Products small grid
// **********************************************************************//
if ( ! function_exists( 'woodmart_products_widget_template' ) ) {
function woodmart_products_widget_template( $upsells, $small_grid = false ) {
global $product;
echo '<ul class="product_list_widget">';
foreach ( $upsells as $upsells_poduct ) {
$product = $upsells_poduct;
if ( $small_grid ) {
wc_get_template( 'content-widget-small.php' );
} else {
wc_get_template( 'content-widget-product.php', array( 'show_rating' => false ) );
}
}
echo '</ul>';
wp_reset_postdata();
}
}
/**
* ------------------------------------------------------------------------------------------------
* My account navigation
* ------------------------------------------------------------------------------------------------
*/
if ( ! function_exists( 'woodmart_my_account_navigation' ) ) {
function woodmart_my_account_navigation( $items ) {
$user_info = get_userdata( get_current_user_id() );
$user_roles = $user_info && property_exists( $user_info, 'roles' ) ? $user_info->roles : array();
unset( $items['customer-logout'] );
if ( class_exists( 'WeDevs_Dokan' ) && apply_filters( 'woodmart_dokan_link', true ) && ( in_array( 'seller', $user_roles ) || in_array( 'administrator', $user_roles ) ) ) {
$items['dokan'] = esc_html__( 'Vendor dashboard', 'woodmart' );
}
$items['customer-logout'] = esc_html__( 'Logout', 'woodmart' );
return $items;
}
add_filter( 'woocommerce_account_menu_items', 'woodmart_my_account_navigation', 15 );
}
if ( ! function_exists( 'woodmart_my_account_navigation_endpoint_url' ) ) {
function woodmart_my_account_navigation_endpoint_url( $url, $endpoint, $value, $permalink ) {
if ( 'dokan' === $endpoint && class_exists( 'WeDevs_Dokan' ) ) {
$url = dokan_get_navigation_url();
}
return $url;
}
add_filter( 'woocommerce_get_endpoint_url', 'woodmart_my_account_navigation_endpoint_url', 15, 4 );
}
if ( ! function_exists( 'woodmart_wc_empty_cart_message' ) ) {
/**
* Show notice if cart is empty.
*
* @since 1.0.0
*/
function woodmart_wc_empty_cart_message() {
woodmart_enqueue_inline_style( 'woo-page-empty-page' );
?>
<p class="cart-empty wd-empty-page wc-empty-cart-message">
<?php echo wp_kses_post( apply_filters( 'wc_empty_cart_message', __( 'Your cart is currently empty.', 'woocommerce' ) ) ); ?>
</p>
<?php
}
add_action( 'woocommerce_cart_is_empty', 'woodmart_wc_empty_cart_message', 10 );
}
if ( ! function_exists( 'woodmart_product_sku' ) ) {
/**
* Output product SKU.
*
* @return void
*/
function woodmart_product_sku() {
if ( ! woodmart_get_opt( 'sku_under_title' ) ) {
return;
}
global $product;
$sku = $product->get_sku();
if ( ! $sku ) {
return;
}
?>
<div class="wd-product-detail wd-product-sku">
<span class="wd-label">
<?php echo esc_html__( 'SKU:', 'woodmart' ); ?>
</span>
<span>
<?php echo esc_html( $sku ); ?>
</span>
</div>
<?php
}
}
if ( ! function_exists( 'woodmart_stock_status_after_title' ) ) {
/**
* Output stock status after title.
*
* @return void
*/
function woodmart_stock_status_after_title() {
if ( 'after_title' !== woodmart_get_opt( 'stock_status_position' ) ) {
return;
}
global $product;
$wrapper_class = 'stock';
$wrapper_class .= ' wd-style-default';
$stock_status = $product->get_stock_status();
if ( 'instock' === $stock_status ) {
if ( woodmart_get_opt( 'show_stock_quantity_on_grid' ) && $product->get_stock_quantity() ) {
$stock_status_text = sprintf( esc_html__( '%s in stock', 'woodmart' ), wc_format_stock_quantity_for_display( $product->get_stock_quantity(), $product ) );
} else {
$stock_status_text = esc_html__( 'In stock', 'woodmart' );
}
$wrapper_class .= ' in-stock';
} elseif ( 'onbackorder' === $stock_status ) {
$wrapper_class .= ' available-on-backorder';
$stock_status_text = esc_html__( 'Available on backorder', 'woodmart' );
} else {
$wrapper_class .= ' out-of-stock';
$stock_status_text = esc_html__( 'Out of stock', 'woodmart' );
}
woodmart_enqueue_inline_style( 'woo-mod-stock-status' );
?>
<p class="wd-product-stock <?php echo esc_attr( $wrapper_class ); ?>"><?php echo esc_html( $stock_status_text ); ?></p>
<?php
}
}
if ( ! function_exists( 'woodmart_get_product_rating' ) ) {
/**
* Get HTML for ratings.
*
* @param string $style [optional] Specify the name of the style in which to display the product rating. By default, this parameter is 'default'.
* @param int $precision [optional] The optional number of decimal digits to round to.
* @return mixed|string|void
*/
function woodmart_get_product_rating( $style = 'default', $precision = null ) {
global $product;
if ( 'variation' === $product->get_type() ) {
$rating = wc_get_product( $product->get_parent_id() )->get_average_rating();
} else {
$rating = $product->get_average_rating();
}
if ( null !== $precision ) {
$rating = round( $rating, $precision );
}
if ( ! wc_review_ratings_enabled() || ( 0 >= $rating && ! woodmart_get_opt( 'show_empty_star_rating' ) ) ) {
return '';
}
$star_rating_classes = array( 'star-rating' );
$star_rating_html = woodmart_get_star_rating_html( $rating );
if ( 'simple' === $style && in_array( woodmart_loop_prop( 'products_view' ), array( 'grid', 'carousel' ), true ) ) {
woodmart_enqueue_inline_style('mod-star-rating-style-simple');
$star_rating_html = woodmart_get_simple_star_rating_html( $rating );
$star_rating_classes[] = 'wd-style-simple';
}
$star_rating_classes = implode( ' ', $star_rating_classes );
ob_start();
?>
<?php if ( woodmart_get_opt( 'show_reviews_count' ) && wc_reviews_enabled() ) : ?>
<div class="wd-star-rating">
<?php endif; ?>
<?php /* translators: %s: average rating */ ?>
<div class="<?php echo esc_attr( $star_rating_classes ); ?>" role="img" aria-label="<?php echo esc_attr( sprintf( __( 'Rated %s out of 5', 'woocommerce' ), $rating ) ); ?>">
<?php echo wp_kses( $star_rating_html, true ); ?>
</div>
<?php woodmart_show_reviews_count(); ?>
<?php if ( woodmart_get_opt( 'show_reviews_count' ) && wc_reviews_enabled() ) : ?>
</div>
<?php endif; ?>
<?php
return apply_filters( 'woocommerce_product_get_rating_html', ob_get_clean(), $rating, 0 );
}
}
if ( ! function_exists( 'woodmart_get_star_rating_html' ) ) {
/**
* Get HTML for star rating.
*
* @param string $rating Rating.
* @return mixed|void
*/
function woodmart_get_star_rating_html( $rating ) {
ob_start();
?>
<span style="width:<?php echo esc_attr( ( (float) $rating / 5 ) * 100 ); ?>%">
<?php echo wp_kses( sprintf( esc_html__( 'Rated %s out of 5', 'woocommerce' ), '<strong class="rating">' . esc_html( $rating ) . '</strong>' ), true ); ?>
</span>
<?php
return apply_filters( 'woocommerce_get_star_rating_html', ob_get_clean(), $rating, 0 );
}
}
if ( ! function_exists( 'woodmart_get_simple_star_rating_html' ) ) {
/**
* Get HTML for simple star rating.
*
* @param string $rating Rating.
* @return mixed|void
*/
function woodmart_get_simple_star_rating_html( $rating ) {
ob_start();
?>
<div>
<?php echo $rating > 0 ? esc_html( $rating ) : ''; ?>
</div>
<?php
return apply_filters( 'woocommerce_get_star_rating_html', ob_get_clean(), $rating, 0 );
}
}
if ( ! function_exists( 'woodmart_show_reviews_count' ) ) {
/**
* Render reviews count when 'show_reviews_count' option is enabled.
*
* @return void
*/
function woodmart_show_reviews_count() {
global $product;
if ( ! woodmart_get_opt( 'show_reviews_count' ) || ! wc_reviews_enabled() ) {
return;
}
$review_count = $product->get_review_count();
$review_url = get_permalink( $product->get_id() ) . '#reviews';
if ( 0 === $review_count ) {
return;
}
?>
<a href="<?php echo esc_url( $review_url ); ?>" class="woocommerce-review-link" rel="nofollow">
(<?php echo esc_html( $review_count ); ?>)
</a>
<?php
}
}