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-09-06 11:11:22 +00:00
$validation = & new 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-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-08-10 17:11:11 +00:00
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 ;
endif ;
2011-09-06 11:11:22 +00:00
$result = $woocommerce -> cart -> check_cart_item_stock ();
2011-08-10 17:11:11 +00:00
if ( is_wp_error ( $result )) :
2011-09-06 11:11:22 +00:00
$woocommerce -> add_error ( $result -> get_error_message () );
2011-08-10 17:11:11 +00:00
endif ;
2011-09-06 11:11:22 +00:00
$woocommerce -> show_messages ();
2011-08-10 17:11:11 +00:00
2011-09-06 11:11:22 +00:00
if ( sizeof ( $woocommerce -> cart -> cart_contents ) == 0 ) :
2011-09-08 09:46:45 +00:00
echo '<p>' . __ ( 'Your cart is currently empty.' , 'woothemes' ) . '</p>' ;
do_action ( 'woocommerce_empty_cart' );
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-06 11:11:22 +00:00
< form action = " <?php echo $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-09-06 11:11:22 +00:00
if ( sizeof ( $woocommerce -> cart -> cart_contents ) > 0 ) :
foreach ( $woocommerce -> cart -> cart_contents 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-06 11:11:22 +00:00
< td class = " product-remove " >< a href = " <?php echo $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 " >
< a href = " <?php echo get_permalink( $values['product_id'] ); ?> " >
< ? php
if ( $values [ 'variation_id' ] && has_post_thumbnail ( $values [ 'variation_id' ])) :
2011-08-27 19:20:28 +00:00
echo get_the_post_thumbnail ( $values [ 'variation_id' ], 'shop_thumbnail' );
2011-08-22 12:26:17 +00:00
elseif ( has_post_thumbnail ( $values [ 'product_id' ])) :
2011-08-27 19:20:28 +00:00
echo get_the_post_thumbnail ( $values [ 'product_id' ], 'shop_thumbnail' );
2011-08-22 12:26:17 +00:00
else :
2011-09-06 11:11:22 +00:00
echo '<img src="' . $woocommerce -> plugin_url () . '/assets/images/placeholder.png" alt="Placeholder" width="' . $woocommerce -> get_image_size ( 'shop_thumbnail_image_width' ) . '" height="' . $woocommerce -> get_image_size ( 'shop_thumbnail_image_height' ) . '" />' ;
2011-08-22 12:26:17 +00:00
endif ;
?>
</ a >
</ td >
< td class = " product-name " >
< a href = " <?php echo get_permalink( $values['product_id'] ); ?> " >< ? php echo apply_filters ( 'woocommerce_cart_product_title' , $_product -> get_title (), $_product ); ?> </a>
< ? php
if ( $_product instanceof woocommerce_product_variation && is_array ( $values [ 'variation' ])) :
echo woocommerce_get_formatted_variation ( $values [ 'variation' ] );
endif ;
?>
</ td >
< td class = " product-price " >< ? php echo woocommerce_price ( $_product -> get_price ()); ?> </td>
< td class = " product-quantity " >< div class = " quantity " >< input name = " cart[<?php echo $cart_item_key ; ?>][qty] " value = " <?php echo $values['quantity'] ; ?> " size = " 4 " title = " Qty " class = " input-text qty text " maxlength = " 12 " /></ div ></ td >
< td class = " product-subtotal " >< ? php echo woocommerce_price ( $_product -> get_price () * $values [ 'quantity' ]); ?> </td>
</ tr >
< ? php
2011-08-10 17:11:11 +00:00
endif ;
endforeach ;
endif ;
do_action ( 'woocommerce_shop_table_cart' );
?>
< 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' ) ?>
< input type = " submit " class = " button " name = " update_cart " value = " <?php _e('Update Shopping Cart', 'woothemes'); ?> " /> < a href = " <?php echo $woocommerce->cart ->get_checkout_url(); ?> " class = " checkout-button button alt " >< ? php _e ( 'Proceed to Checkout →' , 'woothemes' ); ?> </a>
2011-08-10 17:11:11 +00:00
</ td >
</ tr >
</ tbody >
</ table >
</ form >
< div class = " cart-collaterals " >
< ? php do_action ( 'cart-collaterals' ); ?>
< div class = " cart_totals " >
< ? php
// Hide totals if customer has set location and there are no methods going there
2011-09-06 11:11:22 +00:00
$available_methods = $woocommerce -> shipping -> get_available_shipping_methods ();
if ( $available_methods || ! $woocommerce -> customer -> get_shipping_country () || ! $woocommerce -> shipping -> enabled ) :
2011-08-10 17:11:11 +00:00
?>
< h2 >< ? php _e ( 'Cart Totals' , 'woothemes' ); ?> </h2>
< table cellspacing = " 0 " cellpadding = " 0 " >
< tbody >
< tr >
< th >< ? php _e ( 'Subtotal' , 'woothemes' ); ?> </th>
2011-09-06 11:11:22 +00:00
< td >< ? php echo $woocommerce -> cart -> get_cart_subtotal (); ?> </td>
2011-08-10 17:11:11 +00:00
</ tr >
2011-09-06 11:11:22 +00:00
< ? php if ( $woocommerce -> cart -> get_cart_shipping_total ()) : ?> <tr>
< th >< ? php _e ( 'Shipping' , 'woothemes' ); ?> <small><?php echo $woocommerce->countries->shipping_to_prefix().' '.$woocommerce->countries->countries[ $woocommerce->customer->get_shipping_country() ]; ?></small></th>
< td >< ? php echo $woocommerce -> cart -> get_cart_shipping_total (); ?> <small><?php echo $woocommerce->cart->get_cart_shipping_title(); ?></small></td>
2011-08-10 17:11:11 +00:00
</ tr >< ? php endif ; ?>
2011-09-06 11:11:22 +00:00
< ? php if ( $woocommerce -> cart -> get_cart_tax ()) : ?> <tr>
< th >< ? php _e ( 'Tax' , 'woothemes' ); ?> <?php if ($woocommerce->customer->is_customer_outside_base()) : ?><small><?php echo sprintf(__('estimated for %s', 'woothemes'), $woocommerce->countries->estimated_for_prefix() . $woocommerce->countries->countries[ $woocommerce->countries->get_base_country() ] ); ?></small><?php endif; ?></th>
2011-08-10 17:11:11 +00:00
< td >< ? php
2011-09-06 11:11:22 +00:00
echo $woocommerce -> cart -> get_cart_tax ();
2011-08-10 17:11:11 +00:00
?> </td>
</ tr >< ? php endif ; ?>
2011-09-06 11:11:22 +00:00
< ? php if ( $woocommerce -> cart -> get_total_discount ()) : ?> <tr class="discount">
2011-08-10 17:11:11 +00:00
< th >< ? php _e ( 'Discount' , 'woothemes' ); ?> </th>
2011-09-06 11:11:22 +00:00
< td >-< ? php echo $woocommerce -> cart -> get_total_discount (); ?> </td>
2011-08-10 17:11:11 +00:00
</ tr >< ? php endif ; ?>
< tr >
< th >< strong >< ? php _e ( 'Total' , 'woothemes' ); ?> </strong></th>
2011-09-06 11:11:22 +00:00
< td >< strong >< ? php echo $woocommerce -> cart -> get_total (); ?> </strong></td>
2011-08-10 17:11:11 +00:00
</ tr >
</ tbody >
</ table >
< ? php
else :
echo '<p>' . __ ( 'Sorry, it seems that there are no available shipping methods to your location. Please contact us if you require assistance or wish to make alternate arrangements.' , 'woothemes' ) . '</p>' ;
endif ;
?>
</ div >
< ? php woocommerce_shipping_calculator (); ?>
</ div >
< ? php
}