* @link http://domain.tld
* @license GPL 2.0+
* @copyright 2022 WebAppick
*/
// Ensure the file is not accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
use Disco\App\Disco;
if ( ! function_exists( 'disco_update_cart_price_by_campaigns' ) ) {
/**
* Run the Cart Intent campaigns before cart.
*
* @param \WC_Cart $cart Cart Object.
* @return \WC_Cart
* @throws \Exception If the campaign is not found.
*/
function disco_add_cart_discount( $cart ) {
return ( new Disco )->get_cart_discount( $cart );
}
add_action( 'woocommerce_cart_calculate_fees', 'disco_add_cart_discount', 1, 1 );
}
// Set Cart Items discounts.
if ( ! function_exists( 'disco_set_cart_item_price' ) ) {
/**
* Set Cart Items discounts.
*
* @param \WC_Cart $cart Cart Object.
*/
function disco_set_cart_item_price( $cart ) {
// echo "
";
// print_r( ( new Disco )->get_cart_items_discount($cart) );
// echo "
";
// die();
// return ( new Disco )->get_cart_items_discount();
}
// add_action( 'woocommerce_before_calculate_totals', 'disco_set_cart_item_price',1,1 );
}
if ( ! function_exists( 'disco_run_after_cart' ) ) {
/**
* Display Cart Item Sale Price & Regular Price.
*
* @param string $price Cart Item Price.
* @param array $cart_item Cart Item.
* @return string
*/
function disco_display_regular_and_sale_price_in_cart_item( $price, $cart_item ) {
$product_id = $cart_item['product_id'];
$product = wc_get_product( $product_id );
$regular_price = $product->get_price();
$sale_price = $cart_item['data']->get_price();
if ( isset( $cart_item['free'] ) && 'yes' === $cart_item['free'] ) {
$cart_item['data']->set_price( 0 );
return 0;
}
$offers = $cart_item['data']->get_meta( '_item_offers' );
if ( $sale_price && $sale_price < $regular_price ) {
$price = '' . wc_price( $regular_price ) . ' ' . wc_price( $sale_price ) . '';
}
if ( ! empty( $offers ) && isset( $offers['key'] ) ) {
$key = $offers['key'];
$bogo_qty = $offers['bogo_qty'][ $key ];
if ( ! empty( $bogo_qty ) ) {
$price = $bogo_qty;
}
}
return $price;
}
// add_filter( 'woocommerce_cart_item_price', 'disco_display_regular_and_sale_price_in_cart_item', 10, 2 );
}
if ( ! function_exists( 'disco_display_subtotal_regular_and_sale_price_in_cart_item' ) ) {
/**
* Display Cart Item Subtotal Sale Price & Regular Price.
*
* @param string $subtotal Cart Item Subtotal.
* @param array $cart_item Cart Item.
* @return string
*/
function disco_display_subtotal_regular_and_sale_price_in_cart_item( $subtotal, $cart_item ) {
$product_id = $cart_item['product_id'];
$quantity = $cart_item['quantity'];
$product = wc_get_product( $product_id );
$regular_price = $product->get_price() * $quantity;
$sale_price = $cart_item['data']->get_price() * $quantity;
if ( $sale_price && $sale_price < $regular_price ) {
$subtotal = '' . wc_price( $regular_price ) . ' ' . wc_price( $sale_price ) . '';
}
return $subtotal;
}
// add_filter( 'woocommerce_cart_item_subtotal', 'disco_display_subtotal_regular_and_sale_price_in_cart_item', 10, 2 );
}
if ( ! function_exists( 'disco_cart_item_quantity_notice' ) ) {
/**
* Display Cart Item Quantity Badge.
*
* @param string $quantity_html Cart Item Quantity HTML.
* @param array $cart_item Cart Item.
* @return string
*/
function disco_cart_item_quantity_notice( $quantity_html, $cart_item ) {//phpcs:ignore
// Wrap the quantity in a badge-images element
$item = WC()->cart->get_cart()[ $cart_item ];
$offers = $item['data']->get_meta( '_item_offers' );
if ( ! empty( $offers['price'] ) ) {
$message = sprintf( 'Add % s get % s off', $offers['quantity'], wc_price( $offers['price'] ) );
$quantity_html .= sprintf( '%s', $message );
}
return $quantity_html;
}
// add_filter( 'woocommerce_cart_item_quantity', 'disco_cart_item_quantity_notice', 10, 2 );
// To apply this action, uncomment the above line.
}
if ( ! function_exists( 'disco_add_button_to_cart_item_name' ) ) {
/**
* Add a button to the cart item name.
*
* @param string $product_name Product Name.
* @return string
*/
function disco_add_button_to_cart_item_name( $product_name ) {
$button = ( new Disco )->get_offers(); // Replace '// ' with your desired link.
return $product_name . '
' . $button; // This will add the button after the product name.
}
// add_filter( 'woocommerce_cart_item_name', 'disco_add_button_to_cart_item_name', 10, 1 );
// To apply this filter, uncomment the above line.
}