query->get_tax_query(); $args['tax_query'][] = array( 'taxonomy' => 'product_visibility', 'terms' => 'featured', 'field' => 'name', 'operator' => 'IN', 'include_children' => false, ); break; case 'top_rated': $args['meta_key'] = '_wc_average_rating'; $args['order'] = 'DESC'; $args['orderby'] = 'meta_value_num'; break; case 'best_selling': $args['meta_key'] = 'total_sales'; $args['order'] = 'DESC'; $args['orderby'] = 'meta_value_num'; break; } } return $args; } } if ( ! function_exists( 'qi_blocks_get_product_list_holder_classes' ) ) { /** * Function that return element holder classes * * @param array $atts - options value * * @return string */ function qi_blocks_get_product_list_holder_classes( $atts ) { $classes = qi_blocks_get_block_holder_classes( 'product-list', $atts, 'qi-blocks-woo-block' ); $classes[] = ! empty( $atts['columnClasses'] ) ? $atts['columnClasses'] : ''; $classes[] = ! empty( $atts['itemLayout'] ) ? 'qodef-item-layout--' . $atts['itemLayout'] : ''; $classes[] = ! empty( $atts['imageHover'] ) ? 'qodef-image--hover-' . $atts['imageHover'] : ''; $classes[] = ! empty( $atts['imageZoomOrigin'] ) ? 'qodef-image--hover-from-' . $atts['imageZoomOrigin'] : ''; return implode( ' ', $classes ); } } if ( ! function_exists( 'qi_blocks_woo_get_product_categories' ) ) { /** * Function that render product categories * * @param string $before * @param string $after * * @return string */ function qi_blocks_woo_get_product_categories( $before = '', $after = '' ) { $product = qi_blocks_woo_get_global_product(); return ! empty( $product ) ? wc_get_product_category_list( $product->get_id(), '', $before, $after ) : ''; } } if ( ! function_exists( 'qi_blocks_get_out_of_stock_mark' ) ) { /** * Function for adding out of stock template for product * * @return string which contains html content */ function qi_blocks_get_out_of_stock_mark() { return '' . esc_html__( 'Sold', 'qi-blocks' ) . ''; } } if ( ! function_exists( 'qi_blocks_woo_set_sale_flash' ) ) { /** * Function that override on sale template for product * * @return string which contains html content */ function qi_blocks_woo_set_sale_flash() { $product = qi_blocks_woo_get_global_product(); if ( ! empty( $product ) && $product->is_on_sale() && $product->is_in_stock() ) { $sale_label = esc_html__( 'Sale', 'qi-blocks' ); return '' . $sale_label . ''; } return ''; } } if ( ! function_exists( 'qi_blocks_generate_add_to_cart_button_params' ) ) { /** * Function for generating add to cart button params * * @param array $atts - options value * * @return array */ function qi_blocks_generate_add_to_cart_button_params( $atts ) { $product = qi_blocks_woo_get_global_product(); $params = array(); if ( $product ) { $args = array( 'quantity' => 1, 'class' => implode( ' ', array_filter( array( 'button', 'product_type_' . $product->get_type(), $product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '', $product->supports( 'ajax_add_to_cart' ) && $product->is_purchasable() && $product->is_in_stock() ? 'ajax_add_to_cart' : '', ) ) ), 'attributes' => array( 'data-product_id' => $product->get_id(), 'data-product_sku' => $product->get_sku(), 'aria-label' => $product->add_to_cart_description(), 'rel' => 'nofollow', ), ); if ( isset( $args['attributes']['aria-label'] ) ) { $args['attributes']['aria-label'] = wp_strip_all_tags( $args['attributes']['aria-label'] ); } if ( ! empty( $args['class'] ) ) { $atts['custom_class'] = $args['class']; } if ( count( $args['attributes'] ) ) { $params['custom_attrs'] = $args['attributes']; $params['custom_attrs']['data-quantity'] = $args['quantity']; } $params['button_link'] = array( 'url' => $product->add_to_cart_url(), ); $params['buttonText'] = $product->add_to_cart_text(); $params['button_classes'] = qi_blocks_button_get_holder_classes( $atts ); $params['icon_classes'] = qi_blocks_button_get_icon_classes( $atts ); $params['data_attrs'] = array_merge( array( 'target' => '_self' ), $params['custom_attrs'] ); } return $params; } } if ( ! function_exists( 'qi_blocks_woo_product_get_rating_html' ) ) { /** * Function that return ratings templates * * @param string $html - contains html content * @param float $rating * * @return string */ function qi_blocks_woo_product_get_rating_html( $html, $rating ) { if ( ! empty( $rating ) ) { $product_rating = apply_filters( 'qi_blocks_filter_woocommerce_product_rating', '' ); $html = '
'; $html .= '
' . str_repeat( $product_rating, 5 ) . '
'; $html .= '
'; $html .= str_repeat( $product_rating, 5 ); $html .= '
'; $html .= '
'; } return $html; } }