/home/ytevagd/public_html/wp-content/themes/flatsome/inc/woocommerce/class-mini-cart.php
<?php
/**
* Mini cart class.
*
* @package Flatsome\WooCommerce
*/
namespace Flatsome\WooCommerce;
defined( 'ABSPATH' ) || exit;
/**
* Class MiniCart
*
* @package Flatsome\WooCommerce
*/
final class MiniCart {
/**
* The single instance of the class.
*
* @var MiniCart
*/
protected static $instance = null;
/**
* MiniCart constructor.
*/
private function __construct() {
add_action( 'flatsome_before_mini_cart_empty_message', [ $this, 'before_empty_message_html' ] );
add_action( 'flatsome_after_mini_cart_empty_message', [ $this, 'after_empty_message_html' ] );
add_action( 'wp_ajax_flatsome_ajax_cart_item_alter_quantity', [ $this, 'cart_item_alter_quantity' ] );
add_action( 'wp_ajax_nopriv_flatsome_ajax_cart_item_alter_quantity', [ $this, 'cart_item_alter_quantity' ] );
add_filter( 'woocommerce_widget_cart_item_quantity', [ $this, 'quantity_html' ], 11, 3 );
add_action( 'flatsome_after_mini_cart_contents', [ $this, 'cross_sells' ] );
add_action( 'flatsome_before_mini_cart_cross_sells', function () {
add_filter( 'woocommerce_loop_add_to_cart_link', [ $this, 'loop_add_to_cart' ], 5, 3 );
} );
add_action( 'flatsome_after_mini_cart_cross_sells', function () {
remove_filter( 'woocommerce_loop_add_to_cart_link', [ $this, 'loop_add_to_cart' ], 5 );
} );
add_action( 'wp_loaded', [ $this, 'refresh_on_customizer_open' ] );
}
/**
* Main instance.
*
* @return MiniCart
*/
public static function instance() {
if ( is_null( self::$instance ) ) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Update cart quantity.
*
* @return void
*/
public function cart_item_alter_quantity() {
$quantity = ! empty( $_POST['quantity'] ) ? wc_stock_amount( wp_unslash( $_POST['quantity'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification
$cart_item_key = wc_clean( isset( $_POST['cart_item_key'] ) ? wp_unslash( $_POST['cart_item_key'] ) : '' ); // phpcs:ignore WordPress.Security.NonceVerification
if ( empty( $cart_item_key ) ) {
wp_send_json_error();
}
$cart = WC()->cart->get_cart();
$values = array();
$cart_updated = false;
if ( ! empty( $cart[ $cart_item_key ] ) ) {
$values = $cart[ $cart_item_key ];
}
$passed_validation = apply_filters( 'woocommerce_update_cart_validation', true, $cart_item_key, $values, $quantity );
if ( $passed_validation && $quantity ) {
WC()->cart->set_quantity( $cart_item_key, $quantity, false );
$cart_updated = true;
} elseif ( ! $quantity ) {
WC()->cart->remove_cart_item( $cart_item_key );
}
// Trigger action - let 3rd parties update the cart if they need to and update the $cart_updated variable.
$cart_updated = apply_filters( 'woocommerce_update_cart_action_cart_updated', $cart_updated );
if ( $cart_updated ) {
WC()->cart->calculate_totals();
}
wp_send_json( WC()->cart->get_cart_item( $cart_item_key ) );
}
/**
* Before empty message html.
*
* @return void
*/
public function before_empty_message_html() {
?>
<div class="ux-mini-cart-empty-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 17 19" style="opacity:.1;height:80px;">
<path d="M8.5 0C6.7 0 5.3 1.2 5.3 2.7v2H2.1c-.3 0-.6.3-.7.7L0 18.2c0 .4.2.8.6.8h15.7c.4 0 .7-.3.7-.7v-.1L15.6 5.4c0-.3-.3-.6-.7-.6h-3.2v-2c0-1.6-1.4-2.8-3.2-2.8zM6.7 2.7c0-.8.8-1.4 1.8-1.4s1.8.6 1.8 1.4v2H6.7v-2zm7.5 3.4 1.3 11.5h-14L2.8 6.1h2.5v1.4c0 .4.3.7.7.7.4 0 .7-.3.7-.7V6.1h3.5v1.4c0 .4.3.7.7.7s.7-.3.7-.7V6.1h2.6z" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor"></path>
</svg>
</div>
<?php
}
/**
* After empty message html.
*
* @return void
*/
public function after_empty_message_html() {
if ( wc_get_page_id( 'shop' ) > 0 ) :
?>
<p class="return-to-shop">
<a class="button primary wc-backward<?php if ( fl_woocommerce_version_check( '7.0.1' ) ) {
echo esc_attr( wc_wp_theme_get_element_class_name( 'button' ) ? ' ' . wc_wp_theme_get_element_class_name( 'button' ) : '' );
} ?>" href="<?php echo esc_url( apply_filters( 'woocommerce_return_to_shop_redirect', wc_get_page_permalink( 'shop' ) ) ); ?>">
<?php
/**
* Filter "Return To Shop" text.
*
* @param string $default_text Default text.
*
* @since 4.6.0
*/
echo esc_html( apply_filters( 'woocommerce_return_to_shop_text', __( 'Return to shop', 'woocommerce' ) ) );
?>
</a>
</p>
<?php
endif;
}
/**
* Replace normal add to cart button html, to small add button.
*
* @param string $link The link html.
* @param \WC_product $product The product object.
* @param array $args The args.
*
* @return string The modified link html.
*/
public function loop_add_to_cart( $link, $product, $args ) {
$insert = '<svg width="10" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg"><path d="M11 5H7V1a1 1 0 00-2 0v4H1a1 1 0 000 2h4v4a1 1 0 002 0V7h4a1 1 0 000-2z" fill="currentColor" fill-rule="nonzero"></path></svg>' . esc_html_x( 'Add', 'mini cart add to cart button label', 'flatsome' );
return preg_replace( '/(<a.*?>).*?(<\/a>)/', '$1' . $insert . '$2', $link );
}
/**
* Renders the quantity html.
*
* @param string $markup The markup.
* @param array $cart_item The cart item.
* @param string $cart_item_key The cart item key.
*/
public function quantity_html( $markup, $cart_item, $cart_item_key ) {
$header_cart_qty = get_theme_mod( 'header_cart_qty' );
$product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
$product_name = apply_filters( 'woocommerce_cart_item_name', $product->get_name(), $cart_item, $cart_item_key );
ob_start();
?>
<div class="ux-mini-cart-qty">
<?php
if ( $header_cart_qty && $product->is_purchasable() && apply_filters( 'flatsome_show_mini_cart_item_quantity', true, $cart_item_key ) ) {
if ( $product->is_sold_individually() ) {
$min_quantity = 1;
$max_quantity = 1;
} else {
$min_quantity = 0;
$max_quantity = $product->get_max_purchase_quantity();
}
$product_quantity = woocommerce_quantity_input(
array(
'input_name' => "cart[{$cart_item_key}][qty]",
'input_value' => $cart_item['quantity'],
'min_value' => $min_quantity,
'max_value' => $max_quantity,
'product_name' => $product_name,
),
$product,
false
);
echo apply_filters( 'woocommerce_cart_item_quantity', $product_quantity, $cart_item_key, $cart_item ); // phpcs:ignore WordPress.Security.EscapeOutput
}
if ( $header_cart_qty ) {
?>
<span class="product-subtotal price-wrapper" data-title="<?php esc_attr_e( 'Subtotal', 'woocommerce' ); ?>">
<?php echo apply_filters( 'woocommerce_cart_item_subtotal', WC()->cart->get_product_subtotal( $product, $cart_item['quantity'] ), $cart_item, $cart_item_key ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</span>
<?php
} else {
echo $markup; // phpcs:ignore WordPress.Security.EscapeOutput
}
?>
</div>
<?php
return ob_get_clean();
}
/**
* Mini cart cross sells template.
*/
public function cross_sells() {
if ( ! get_theme_mod( 'header_cart_cross_sells' ) ) {
return;
}
$cross_sells = array_filter( array_map( 'wc_get_product', WC()->cart->get_cross_sells() ), 'wc_products_array_filter_visible' );
$cross_sells = array_filter( array_map( function ( $product ) {
if ( ! $product->is_in_stock() ) return false;
return $product;
}, $cross_sells ) );
$cross_sells_orderby = apply_filters( 'woocommerce_cross_sells_orderby', 'date' );
$cross_sells_orderby = apply_filters( 'flatsome_mini_cart_cross_sells_orderby', $cross_sells_orderby );
$cross_sells_order = apply_filters( 'woocommerce_cross_sells_order', 'desc' );
$cross_sells_order = apply_filters( 'flatsome_mini_cart_cross_sells_order', $cross_sells_order );
$cross_sells = wc_products_array_orderby( $cross_sells, $cross_sells_orderby, $cross_sells_order );
$limit = intval( apply_filters( 'flatsome_mini_cart_cross_sells_total', 5 ) );
$cross_sells = $limit > 0 ? array_slice( $cross_sells, 0, $limit ) : $cross_sells;
wc_get_template( 'cart/mini-cart/cross-sells.php', array( 'cross_sells' => $cross_sells ) );
}
/**
* Refresh mini cart on customizer open.
*
* @return void
*/
public function refresh_on_customizer_open() {
if ( is_customize_preview() ) {
do_action( 'wc_cart_fragments_refresh' );
}
}
}
Run Command [Bypass]
Run Command
CVARA – NHẬP KHẨU PHÁP – GIÚP PHÁT TRIỂN CHIỀU CAO VÀ PHÒNG CHỐNG LOÃNG XƯƠNG. - Giải pháp chăm sóc tại nhà Việt Nam
Chuyển đến nội dung
Home / THỰC PHẨM CHỨC NĂNG / CƠ - XƯƠNG - KHỚP
CVARA – NHẬP KHẨU PHÁP – GIÚP PHÁT TRIỂN CHIỀU CAO VÀ PHÒNG CHỐNG LOÃNG XƯƠNG.
CVARA – NHẬP KHẨU PHÁP – BỔ SUNG CALCI NANO VITAMIN D3 VÀ MK7 – GIÚP PHÁT TRIỂN CHIỀU CAO VÀ PHÒNG CHỐNG LOÃNG XƯƠNG.
CVARA – NHẬP KHẨU PHÁP – BỔ SUNG CALCI NANO VITAMIN D3 VÀ MK7 – GIÚP PHÁT TRIỂN CHIỀU CAO VÀ PHÒNG CHỐNG LOÃNG XƯƠNG
– Bổ sung Canxi nhằm hỗ trợ phát triển chiều cao cho thanh thiếu niên trong độ tuổi phát triển chiều cao, giúp xương chắc khỏe, phòng ngừa còi xương ở trẻ em
– Chống loãng xương, giúp phục hồi xương gãy, giảm đau lưng cho người lớn, ngăn chặn các hiện tượng thoái hóa, giòn xương do thiếu canxi trong máu, giúp cơ thể khỏe mạnh
– Giảm tình trạng viêm khớp, thoái hóa khớp. Cung cấp canxi, vitamin D3 cho phụ nữ có thai và cho con bú. Tăng cường và phát triển hệ xương ở thai nhi
– Giảm tê bì chân tay, chuột rút. Kết hợp hỗ trợ điều trị thiếu canxi huyết
CAM KẾT HÀNG CHÍNH HÃNG – GIÁ CẢ HỢP LÝ – TIẾT KIỆM 5-7% – GIAO HÀNG TOÀN QUỐC.
CVARA – NHẬP KHẨU PHÁP – GIÚP PHÁT TRIỂN CHIỀU CAO VÀ PHÒNG CHỐNG LOÃNG XƯƠNG. quantity
Mua Hàng