2011-12-09 17:01:56 +00:00
< ? php
/**
2015-11-03 13:53:50 +00:00
* Cart Page
2012-08-14 18:05:45 +00:00
*
2015-11-03 13:31:20 +00:00
* This template can be overridden by copying it to yourtheme / woocommerce / cart / cart . php .
2015-10-01 14:07:20 +00:00
*
2016-02-12 11:28:41 +00:00
* HOWEVER , on occasion WooCommerce will need to update template files and you
* ( the theme developer ) will need to copy the new files to your theme to
* maintain compatibility . We try to do this as little as possible , but it does
* happen . When this occurs the version of the template file will be bumped and
* the readme will list any important changes .
2015-10-01 14:07:20 +00:00
*
2016-07-19 10:30:31 +00:00
* @ see https :// docs . woocommerce . com / document / template - structure /
2020-08-24 19:44:20 +00:00
* @ package WooCommerce / Templates
* @ version 3.8 . 0
2011-12-09 17:01:56 +00:00
*/
2012-08-14 18:05:45 +00:00
2018-03-13 14:15:41 +00:00
defined ( 'ABSPATH' ) || exit ;
2012-10-15 10:57:58 +00:00
2013-06-17 11:21:06 +00:00
do_action ( 'woocommerce_before_cart' ); ?>
2013-02-22 18:14:59 +00:00
2016-11-11 16:00:32 +00:00
< form class = " woocommerce-cart-form " action = " <?php echo esc_url( wc_get_cart_url() ); ?> " method = " post " >
< ? php do_action ( 'woocommerce_before_cart_table' ); ?>
< table class = " shop_table shop_table_responsive cart woocommerce-cart-form__contents " cellspacing = " 0 " >
< thead >
< tr >
< th class = " product-remove " >& nbsp ; </ th >
< th class = " product-thumbnail " >& nbsp ; </ th >
2017-11-07 09:37:48 +00:00
< th class = " product-name " >< ? php esc_html_e ( 'Product' , 'woocommerce' ); ?> </th>
< th class = " product-price " >< ? php esc_html_e ( 'Price' , 'woocommerce' ); ?> </th>
< th class = " product-quantity " >< ? php esc_html_e ( 'Quantity' , 'woocommerce' ); ?> </th>
2019-08-19 22:47:02 +00:00
< th class = " product-subtotal " >< ? php esc_html_e ( 'Subtotal' , 'woocommerce' ); ?> </th>
2016-11-11 16:00:32 +00:00
</ tr >
</ thead >
< tbody >
< ? php do_action ( 'woocommerce_before_cart_contents' ); ?>
< ? php
foreach ( WC () -> cart -> get_cart () as $cart_item_key => $cart_item ) {
$_product = apply_filters ( 'woocommerce_cart_item_product' , $cart_item [ 'data' ], $cart_item , $cart_item_key );
$product_id = apply_filters ( 'woocommerce_cart_item_product_id' , $cart_item [ 'product_id' ], $cart_item , $cart_item_key );
if ( $_product && $_product -> exists () && $cart_item [ 'quantity' ] > 0 && apply_filters ( 'woocommerce_cart_item_visible' , true , $cart_item , $cart_item_key ) ) {
$product_permalink = apply_filters ( 'woocommerce_cart_item_permalink' , $_product -> is_visible () ? $_product -> get_permalink ( $cart_item ) : '' , $cart_item , $cart_item_key );
?>
< tr class = " woocommerce-cart-form__cart-item <?php echo esc_attr( apply_filters( 'woocommerce_cart_item_class', 'cart_item', $cart_item , $cart_item_key ) ); ?> " >
< td class = " product-remove " >
< ? php
2019-07-14 17:27:42 +00:00
echo apply_filters ( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'woocommerce_cart_item_remove_link' ,
sprintf (
'<a href="%s" class="remove" aria-label="%s" data-product_id="%s" data-product_sku="%s">×</a>' ,
esc_url ( wc_get_cart_remove_url ( $cart_item_key ) ),
esc_html__ ( 'Remove this item' , 'woocommerce' ),
esc_attr ( $product_id ),
esc_attr ( $_product -> get_sku () )
),
$cart_item_key
);
2016-11-11 16:00:32 +00:00
?>
</ td >
2018-03-13 14:15:41 +00:00
< td class = " product-thumbnail " >
< ? php
2017-10-02 17:13:15 +00:00
$thumbnail = apply_filters ( 'woocommerce_cart_item_thumbnail' , $_product -> get_image (), $cart_item , $cart_item_key );
if ( ! $product_permalink ) {
2018-10-15 21:11:34 +00:00
echo $thumbnail ; // PHPCS: XSS ok.
2017-10-02 17:13:15 +00:00
} else {
2018-10-15 21:11:34 +00:00
printf ( '<a href="%s">%s</a>' , esc_url ( $product_permalink ), $thumbnail ); // PHPCS: XSS ok.
2017-10-02 17:13:15 +00:00
}
2018-03-13 14:15:41 +00:00
?>
</ td >
2017-10-02 17:13:15 +00:00
2018-03-13 14:15:41 +00:00
< td class = " product-name " data - title = " <?php esc_attr_e( 'Product', 'woocommerce' ); ?> " >
< ? php
2017-10-02 17:13:15 +00:00
if ( ! $product_permalink ) {
2020-08-24 19:44:20 +00:00
echo wp_kses_post ( apply_filters ( 'woocommerce_cart_item_name' , $_product -> get_name (), $cart_item , $cart_item_key ) . ' ' );
2017-10-02 17:13:15 +00:00
} else {
2020-08-24 19:44:20 +00:00
echo wp_kses_post ( apply_filters ( 'woocommerce_cart_item_name' , sprintf ( '<a href="%s">%s</a>' , esc_url ( $product_permalink ), $_product -> get_name () ), $cart_item , $cart_item_key ) );
2017-10-02 17:13:15 +00:00
}
2018-05-24 04:08:27 +00:00
do_action ( 'woocommerce_after_cart_item_name' , $cart_item , $cart_item_key );
2017-10-02 17:13:15 +00:00
// Meta data.
2018-03-13 14:15:41 +00:00
echo wc_get_formatted_cart_item_data ( $cart_item ); // PHPCS: XSS ok.
2017-10-02 17:13:15 +00:00
// Backorder notification.
if ( $_product -> backorders_require_notification () && $_product -> is_on_backorder ( $cart_item [ 'quantity' ] ) ) {
2018-06-07 09:25:37 +00:00
echo wp_kses_post ( apply_filters ( 'woocommerce_cart_item_backorder_notification' , '<p class="backorder_notification">' . esc_html__ ( 'Available on backorder' , 'woocommerce' ) . '</p>' , $product_id ) );
2017-10-02 17:13:15 +00:00
}
2018-03-13 14:15:41 +00:00
?>
</ td >
2016-11-11 16:00:32 +00:00
2017-04-13 07:39:21 +00:00
< td class = " product-price " data - title = " <?php esc_attr_e( 'Price', 'woocommerce' ); ?> " >
2016-11-11 16:00:32 +00:00
< ? php
2018-03-13 14:15:41 +00:00
echo apply_filters ( 'woocommerce_cart_item_price' , WC () -> cart -> get_product_price ( $_product ), $cart_item , $cart_item_key ); // PHPCS: XSS ok.
2016-11-11 16:00:32 +00:00
?>
</ td >
2018-03-13 14:15:41 +00:00
< td class = " product-quantity " data - title = " <?php esc_attr_e( 'Quantity', 'woocommerce' ); ?> " >
< ? php
2017-10-02 17:13:15 +00:00
if ( $_product -> is_sold_individually () ) {
$product_quantity = sprintf ( '1 <input type="hidden" name="cart[%s][qty]" value="1" />' , $cart_item_key );
} else {
2019-07-14 17:27:42 +00:00
$product_quantity = woocommerce_quantity_input (
array (
'input_name' => " cart[ { $cart_item_key } ][qty] " ,
'input_value' => $cart_item [ 'quantity' ],
'max_value' => $_product -> get_max_purchase_quantity (),
'min_value' => '0' ,
'product_name' => $_product -> get_name (),
),
$_product ,
false
);
2017-10-02 17:13:15 +00:00
}
2018-03-13 14:15:41 +00:00
echo apply_filters ( 'woocommerce_cart_item_quantity' , $product_quantity , $cart_item_key , $cart_item ); // PHPCS: XSS ok.
?>
</ td >
2016-11-11 16:00:32 +00:00
2019-10-18 11:50:04 +00:00
< td class = " product-subtotal " data - title = " <?php esc_attr_e( 'Subtotal', 'woocommerce' ); ?> " >
2016-11-11 16:00:32 +00:00
< ? php
2018-03-13 14:15:41 +00:00
echo apply_filters ( 'woocommerce_cart_item_subtotal' , WC () -> cart -> get_product_subtotal ( $_product , $cart_item [ 'quantity' ] ), $cart_item , $cart_item_key ); // PHPCS: XSS ok.
2016-11-11 16:00:32 +00:00
?>
</ td >
</ tr >
< ? php
}
2012-04-20 11:09:49 +00:00
}
2016-11-11 16:00:32 +00:00
?>
2012-08-14 18:05:45 +00:00
2016-11-11 16:00:32 +00:00
< ? php do_action ( 'woocommerce_cart_contents' ); ?>
2012-03-12 09:25:06 +00:00
2016-11-11 16:00:32 +00:00
< tr >
< td colspan = " 6 " class = " actions " >
2012-08-14 18:05:45 +00:00
2016-11-11 16:00:32 +00:00
< ? php if ( wc_coupons_enabled () ) { ?>
< div class = " coupon " >
2018-02-21 06:19:26 +00:00
< label for = " coupon_code " >< ? php esc_html_e ( 'Coupon:' , 'woocommerce' ); ?> </label> <input type="text" name="coupon_code" class="input-text" id="coupon_code" value="" placeholder="<?php esc_attr_e( 'Coupon code', 'woocommerce' ); ?>" /> <button type="submit" class="button" name="apply_coupon" value="<?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?>"><?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?></button>
2016-11-11 16:00:32 +00:00
< ? php do_action ( 'woocommerce_cart_coupon' ); ?>
</ div >
< ? php } ?>
2012-08-14 18:05:45 +00:00
2017-11-07 09:39:08 +00:00
< button type = " submit " class = " button " name = " update_cart " value = " <?php esc_attr_e( 'Update cart', 'woocommerce' ); ?> " >< ? php esc_html_e ( 'Update cart' , 'woocommerce' ); ?> </button>
2012-03-12 09:25:06 +00:00
2016-11-11 16:00:32 +00:00
< ? php do_action ( 'woocommerce_cart_actions' ); ?>
2012-08-21 16:23:26 +00:00
2018-03-13 14:15:41 +00:00
< ? php wp_nonce_field ( 'woocommerce-cart' , 'woocommerce-cart-nonce' ); ?>
2016-11-11 16:00:32 +00:00
</ td >
</ tr >
2013-02-25 10:10:11 +00:00
2016-11-11 16:00:32 +00:00
< ? php do_action ( 'woocommerce_after_cart_contents' ); ?>
</ tbody >
</ table >
< ? php do_action ( 'woocommerce_after_cart_table' ); ?>
2011-12-09 17:01:56 +00:00
</ form >
2013-02-25 10:10:11 +00:00
2019-07-14 17:27:42 +00:00
< ? php do_action ( 'woocommerce_before_cart_collaterals' ); ?>
2011-12-09 17:01:56 +00:00
< div class = " cart-collaterals " >
2017-04-20 07:48:36 +00:00
< ? php
/**
2017-10-02 17:13:15 +00:00
* Cart collaterals hook .
2017-04-20 07:48:36 +00:00
*
* @ hooked woocommerce_cross_sell_display
* @ hooked woocommerce_cart_totals - 10
*/
2017-10-02 17:13:15 +00:00
do_action ( 'woocommerce_cart_collaterals' );
2017-04-20 07:48:36 +00:00
?>
2013-02-22 18:14:59 +00:00
</ div >
2014-05-07 00:49:30 +00:00
< ? php do_action ( 'woocommerce_after_cart' ); ?>