2011-08-10 17:11:11 +00:00
< ? php
/**
* Cart Shortcode
*
* Used on the cart page , the cart shortcode displays the cart contents and interface for coupon codes and other cart bits and pieces .
*
* @ package WooCommerce
* @ category Shortcode
* @ author WooThemes
*/
function get_woocommerce_cart ( $atts ) {
2011-09-06 11:11:22 +00:00
global $woocommerce ;
return $woocommerce -> shortcode_wrapper ( 'woocommerce_cart' , $atts );
2011-08-10 17:11:11 +00:00
}
function woocommerce_cart ( $atts ) {
2011-09-06 11:11:22 +00:00
global $woocommerce ;
2011-08-10 17:11:11 +00:00
$errors = array ();
2011-12-08 12:50:50 +00:00
$validation = $woocommerce -> validation ();
2011-08-10 17:11:11 +00:00
// Process Discount Codes
2011-09-06 11:11:22 +00:00
if ( isset ( $_POST [ 'apply_coupon' ]) && $_POST [ 'apply_coupon' ] && $woocommerce -> verify_nonce ( 'cart' )) :
2011-08-10 17:11:11 +00:00
$coupon_code = stripslashes ( trim ( $_POST [ 'coupon_code' ]));
2011-09-06 11:11:22 +00:00
$woocommerce -> cart -> add_discount ( $coupon_code );
2011-11-21 11:33:46 +00:00
// Remvoe Discount Codes
elseif ( isset ( $_GET [ 'remove_discounts' ])) :
2011-11-21 17:11:44 +00:00
$woocommerce -> cart -> remove_coupons ( $_GET [ 'remove_discounts' ] );
2011-11-21 11:33:46 +00:00
// Re-calc price
$woocommerce -> cart -> calculate_totals ();
2011-08-10 17:11:11 +00:00
// Update Shipping
2011-09-06 11:11:22 +00:00
elseif ( isset ( $_POST [ 'calc_shipping' ]) && $_POST [ 'calc_shipping' ] && $woocommerce -> verify_nonce ( 'cart' )) :
2011-10-31 16:27:41 +00:00
$_SESSION [ 'calculated_shipping' ] = true ;
2011-09-02 14:42:04 +00:00
unset ( $_SESSION [ '_chosen_shipping_method' ]);
2011-08-10 17:11:11 +00:00
$country = $_POST [ 'calc_shipping_country' ];
$state = $_POST [ 'calc_shipping_state' ];
$postcode = $_POST [ 'calc_shipping_postcode' ];
2011-09-06 11:11:22 +00:00
if ( $postcode && ! $validation -> is_postcode ( $postcode , $country )) :
$woocommerce -> add_error ( __ ( 'Please enter a valid postcode/ZIP.' , 'woothemes' ) );
2011-08-10 17:11:11 +00:00
$postcode = '' ;
elseif ( $postcode ) :
2011-09-06 11:11:22 +00:00
$postcode = $validation -> format_postcode ( $postcode , $country );
2011-08-10 17:11:11 +00:00
endif ;
if ( $country ) :
// Update customer location
2011-09-06 11:11:22 +00:00
$woocommerce -> customer -> set_location ( $country , $state , $postcode );
$woocommerce -> customer -> set_shipping_location ( $country , $state , $postcode );
2011-08-10 17:11:11 +00:00
// Re-calc price
2011-09-06 11:11:22 +00:00
$woocommerce -> cart -> calculate_totals ();
2011-08-10 17:11:11 +00:00
2011-09-06 11:11:22 +00:00
$woocommerce -> add_message ( __ ( 'Shipping costs updated.' , 'woothemes' ) );
2011-08-10 17:11:11 +00:00
else :
2011-09-06 11:11:22 +00:00
$woocommerce -> customer -> set_shipping_location ( '' , '' , '' );
2011-08-10 17:11:11 +00:00
2011-09-06 11:11:22 +00:00
$woocommerce -> add_message ( __ ( 'Shipping costs updated.' , 'woothemes' ) );
2011-08-10 17:11:11 +00:00
endif ;
2011-11-21 11:33:46 +00:00
2011-08-10 17:11:11 +00:00
endif ;
2011-11-09 17:26:45 +00:00
do_action ( 'woocommerce_check_cart_items' );
2011-08-10 17:11:11 +00:00
2011-09-06 11:11:22 +00:00
$woocommerce -> show_messages ();
2011-08-10 17:11:11 +00:00
2011-11-06 13:45:18 +00:00
if ( sizeof ( $woocommerce -> cart -> get_cart ()) == 0 ) :
2011-09-08 09:46:45 +00:00
echo '<p>' . __ ( 'Your cart is currently empty.' , 'woothemes' ) . '</p>' ;
2011-09-21 15:13:53 +00:00
do_action ( 'woocommerce_cart_is_empty' );
2011-09-08 09:46:45 +00:00
echo '<p><a class="button" href="' . get_permalink ( get_option ( 'woocommerce_shop_page_id' )) . '">' . __ ( '← Return To Shop' , 'woothemes' ) . '</a></p>' ;
2011-08-10 17:11:11 +00:00
return ;
endif ;
?>
2011-09-21 06:50:40 +00:00
< form action = " <?php echo esc_url( $woocommerce->cart ->get_cart_url() ); ?> " method = " post " >
2011-08-10 17:11:11 +00:00
< table class = " shop_table cart " cellspacing = " 0 " >
< thead >
< tr >
< th class = " product-remove " ></ th >
< th class = " product-thumbnail " ></ th >
< th class = " product-name " >< span class = " nobr " >< ? php _e ( 'Product Name' , 'woothemes' ); ?> </span></th>
< th class = " product-price " >< span class = " nobr " >< ? php _e ( 'Unit Price' , 'woothemes' ); ?> </span></th>
< th class = " product-quantity " >< ? php _e ( 'Quantity' , 'woothemes' ); ?> </th>
< th class = " product-subtotal " >< ? php _e ( 'Price' , 'woothemes' ); ?> </th>
</ tr >
</ thead >
< tbody >
< ? php
2011-11-06 13:45:18 +00:00
if ( sizeof ( $woocommerce -> cart -> get_cart ()) > 0 ) :
foreach ( $woocommerce -> cart -> get_cart () as $cart_item_key => $values ) :
2011-08-10 17:11:11 +00:00
$_product = $values [ 'data' ];
if ( $_product -> exists () && $values [ 'quantity' ] > 0 ) :
2011-08-22 12:26:17 +00:00
?>
< tr >
2011-09-21 06:50:40 +00:00
< td class = " product-remove " >< a href = " <?php echo esc_url( $woocommerce->cart ->get_remove_url( $cart_item_key ) ); ?> " class = " remove " title = " <?php _e('Remove this item', 'woothemes'); ?> " >& times ; </ a ></ td >
2011-08-22 12:26:17 +00:00
< td class = " product-thumbnail " >
2011-09-21 06:50:40 +00:00
< a href = " <?php echo esc_url( get_permalink( $values['product_id'] ) ); ?> " >
2011-08-22 12:26:17 +00:00
< ? php
2011-11-09 15:39:14 +00:00
echo $_product -> get_image ();
2011-08-22 12:26:17 +00:00
?>
</ a >
</ td >
< td class = " product-name " >
2011-09-21 16:58:05 +00:00
< a href = " <?php echo esc_url( get_permalink( $values['product_id'] ) ); ?> " >< ? php echo $_product -> get_title (); ?> </a>
2011-08-22 12:26:17 +00:00
< ? php
2011-11-06 15:45:22 +00:00
// Meta data
echo $woocommerce -> cart -> get_item_data ( $values );
2011-10-27 09:52:23 +00:00
// Backorder notification
2011-11-13 02:15:00 +00:00
if ( $_product -> backorders_require_notification () && $_product -> get_total_stock () < 1 ) echo '<p class="backorder_notification">' . __ ( 'Available on backorder.' , 'woothemes' ) . '</p>' ;
2011-08-22 12:26:17 +00:00
?>
</ td >
2011-11-22 13:18:33 +00:00
< td class = " product-price " >< ? php
if ( get_option ( 'woocommerce_display_cart_prices_excluding_tax' ) == 'yes' ) :
echo woocommerce_price ( $_product -> get_price_excluding_tax () );
else :
echo woocommerce_price ( $_product -> get_price () );
endif ;
?> </td>
2011-09-19 06:01:26 +00:00
< td class = " product-quantity " >< div class = " quantity " >< input name = " cart[<?php echo $cart_item_key ; ?>][qty] " value = " <?php echo esc_attr( $values['quantity'] ); ?> " size = " 4 " title = " Qty " class = " input-text qty text " maxlength = " 12 " /></ div ></ td >
2011-11-22 13:18:33 +00:00
< td class = " product-subtotal " >< ? php
2011-11-26 16:15:25 +00:00
echo $woocommerce -> cart -> get_product_subtotal ( $_product , $values [ 'quantity' ] ) ;
2011-11-22 13:18:33 +00:00
?> </td>
2011-08-22 12:26:17 +00:00
</ tr >
< ? php
2011-08-10 17:11:11 +00:00
endif ;
endforeach ;
endif ;
2011-09-21 15:13:53 +00:00
do_action ( 'woocommerce_cart_contents' );
2011-08-10 17:11:11 +00:00
?>
< tr >
< td colspan = " 6 " class = " actions " >
< div class = " coupon " >
< label for = " coupon_code " >< ? php _e ( 'Coupon' , 'woothemes' ); ?> :</label> <input name="coupon_code" class="input-text" id="coupon_code" value="" /> <input type="submit" class="button" name="apply_coupon" value="<?php _e('Apply Coupon', 'woothemes'); ?>" />
</ div >
2011-09-06 11:11:22 +00:00
< ? php $woocommerce -> nonce_field ( 'cart' ) ?>
2011-11-30 15:38:50 +00:00
< input type = " submit " class = " button " name = " update_cart " value = " <?php _e('Update Cart', 'woothemes'); ?> " /> < a href = " <?php echo esc_url( $woocommerce->cart ->get_checkout_url() ); ?> " class = " checkout-button button alt " >< ? php _e ( 'Proceed to Checkout →' , 'woothemes' ); ?> </a>
< ? php do_action ( 'woocommerce_proceed_to_checkout' ); ?>
2011-08-10 17:11:11 +00:00
</ td >
</ tr >
</ tbody >
</ table >
</ form >
< div class = " cart-collaterals " >
2011-09-21 15:13:53 +00:00
< ? php do_action ( 'woocommerce_cart_collaterals' ); ?>
2011-09-11 16:42:50 +00:00
< ? php woocommerce_cart_totals (); ?>
2011-08-10 17:11:11 +00:00
< ? php woocommerce_shipping_calculator (); ?>
</ div >
< ? php
}