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 ); }