cart ) || WC()->cart == '' )
WC()->cart = new WC_Cart();
WC()->cart->empty_cart( false );
}
add_action( 'wp_logout', 'wc_empty_cart' );
/**
* Load the cart upon login
*
* @param mixed $user_login
* @param mixed $user
* @return void
*/
function wc_load_persistent_cart( $user_login, $user = 0 ) {
global $woocommerce;
if ( ! $user )
return;
$saved_cart = get_user_meta( $user->ID, '_woocommerce_persistent_cart', true );
if ( $saved_cart )
if ( empty( WC()->session->cart ) || ! is_array( WC()->session->cart ) || sizeof( WC()->session->cart ) == 0 )
WC()->session->cart = $saved_cart['cart'];
}
add_action( 'wp_login', 'wc_load_persistent_cart', 1, 2 );
/**
* Add to cart messages.
*
* @access public
* @param int $product_id
* @return void
*/
function wc_add_to_cart_message( $product_id ) {
global $woocommerce;
if ( is_array( $product_id ) ) {
$titles = array();
foreach ( $product_id as $id ) {
$titles[] = get_the_title( $id );
}
$added_text = sprintf( __( 'Added "%s" to your cart.', 'woocommerce' ), join( __( '" and "', 'woocommerce' ), array_filter( array_merge( array( join( '", "', array_slice( $titles, 0, -1 ) ) ), array_slice( $titles, -1 ) ) ) ) );
} else {
$added_text = sprintf( __( '"%s" was successfully added to your cart.', 'woocommerce' ), get_the_title( $product_id ) );
}
// Output success messages
if ( get_option( 'woocommerce_cart_redirect_after_add' ) == 'yes' ) :
$return_to = apply_filters( 'woocommerce_continue_shopping_redirect', wp_get_referer() ? wp_get_referer() : home_url() );
$message = sprintf('%s %s', $return_to, __( 'Continue Shopping →', 'woocommerce' ), $added_text );
else :
$message = sprintf('%s %s', get_permalink( wc_get_page_id( 'cart' ) ), __( 'View Cart →', 'woocommerce' ), $added_text );
endif;
wc_add_notice( apply_filters( 'wc_add_to_cart_message', $message ) );
}
/**
* Clear cart after payment.
*
* @access public
* @return void
*/
function wc_clear_cart_after_payment() {
global $woocommerce, $wp;
if ( ! empty( $wp->query_vars['order-received'] ) ) {
$order_id = absint( $wp->query_vars['order-received'] );
if ( isset( $_GET['key'] ) )
$order_key = $_GET['key'];
else
$order_key = '';
if ( $order_id > 0 ) {
$order = new WC_Order( $order_id );
if ( $order->order_key == $order_key ) {
WC()->cart->empty_cart();
}
}
}
if ( WC()->session->order_awaiting_payment > 0 ) {
$order = new WC_Order( WC()->session->order_awaiting_payment );
if ( $order->id > 0 ) {
// If the order has not failed, or is not pending, the order must have gone through
if ( $order->status != 'failed' && $order->status != 'pending' )
WC()->cart->empty_cart();
}
}
}
add_action( 'get_header', 'wc_clear_cart_after_payment' );
/**
* Get the subtotal
*
* @access public
* @return string
*/
function wc_cart_totals_subtotal_html() {
echo WC()->cart->get_cart_subtotal();
}
/**
* Get shipping methods
*
* @access public
* @return void
*/
function wc_cart_totals_shipping_html() {
$packages = WC()->shipping->get_packages();
foreach ( $packages as $i => $package ) {
$chosen_method = isset( WC()->session->chosen_shipping_methods[ $i ] ) ? WC()->session->chosen_shipping_methods[ $i ] : '';
wc_get_template( 'cart/cart-shipping.php', array( 'package' => $package, 'available_methods' => $package['rates'], 'show_package_details' => ( sizeof( $packages ) > 1 ), 'index' => $i, 'chosen_method' => $chosen_method ) );
}
}
/**
* Get a coupon value
*
* @access public
* @param string $code
* @return void
*/
function wc_cart_totals_coupon_html( $coupon ) {
if ( is_string( $coupon ) )
$coupon = new WC_Coupon( $coupon );
$value = array();
if ( ! empty( WC()->cart->coupon_discount_amounts[ $coupon->code ] ) )
$value[] = '-' . wc_price( WC()->cart->coupon_discount_amounts[ $coupon->code ] );
if ( $coupon->enable_free_shipping() )
$value[] = __( 'Free shipping coupon', 'woocommerce' );
echo implode( ', ', $value ) . ' ' . __( '[Remove]', 'woocommerce' ) . '';
}
/**
* Get order total html including inc tax if needed
*
* @access public
* @return void
*/
function wc_cart_totals_order_total_html() {
echo '' . WC()->cart->get_total() . ' ';
// If prices are tax inclusive, show taxes here
if ( WC()->cart->tax_display_cart == 'incl' ) {
$tax_string_array = array();
if ( get_option( 'woocommerce_tax_total_display' ) == 'itemized' ) {
foreach ( WC()->cart->get_tax_totals() as $code => $tax )
$tax_string_array[] = sprintf( '%s %s', $tax->formatted_amount, $tax->label );
} else {
$tax_string_array[] = sprintf( '%s %s', wc_price( WC()->cart->get_taxes_total( true, true ) ), WC()->countries->tax_or_vat() );
}
if ( ! empty( $tax_string_array ) )
echo '' . sprintf( __( '(Includes %s)', 'woocommerce' ), implode( ', ', $tax_string_array ) ) . '';
}
}
/**
* Get the fee value
*
* @param object $fee
* @return void
*/
function wc_cart_totals_fee_html( $fee ) {
echo WC()->cart->tax_display_cart == 'excl' ? wc_price( $fee->amount ) : wc_price( $fee->amount + $fee->tax );
}
/**
* Get a shipping methods full label including price
* @param object $method
* @return string
*/
function wc_cart_totals_shipping_method_label( $method ) {
$label = $method->label;
if ( $method->cost > 0 ) {
if ( WC()->cart->tax_display_cart == 'excl' ) {
$label .= ': ' . wc_price( $method->cost );
if ( $method->get_shipping_tax() > 0 && WC()->cart->prices_include_tax ) {
$label .= ' ' . WC()->countries->ex_tax_or_vat() . '';
}
} else {
$label .= ': ' . wc_price( $method->cost + $method->get_shipping_tax() );
if ( $method->get_shipping_tax() > 0 && ! WC()->cart->prices_include_tax ) {
$label .= ' ' . WC()->countries->inc_tax_or_vat() . '';
}
}
} elseif ( $method->id !== 'free_shipping' ) {
$label .= ' (' . __( 'Free', 'woocommerce' ) . ')';
}
return apply_filters( 'woocommerce_cart_shipping_method_full_label', $label, $method );
}