Tùy biến hiển thị giỏ hàng WooCommerce

Khi bạn dùng plugin hoặc giao diện, bạn hoàn toàn có thể tùy biến giỏ hàng WooCommerce theo sở thích.

Tùy chỉnh hiển thị giỏ hàng WooCommerce theo sở thích
Tùy chỉnh hiển thị giỏ hàng WooCommerce theo sở thích

Chỉnh sửa cart.php:

<?php
/**
 * Cart Page
 *
 * This template can be overridden by copying it to yourtheme/woocommerce/cart/cart.php.
 *
 * 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.
 *
 * @see     https://docs.woocommerce.com/document/template-structure/
 * @package WooCommerce\Templates
 * @version 7.9.0
 */

defined( 'ABSPATH' ) || exit;

$course_thumb_size = array( 192, 288, 1 );

do_action( 'woocommerce_before_cart' );

$count_cart = count( WC()->cart->get_cart() );
?>

<form class="woocommerce-cart-form" action="<?php echo esc_url( wc_get_cart_url() ); ?>" method="post">
    <?php do_action( 'woocommerce_before_cart_table' ); ?>

    <div class="custom-cart" data-items="<?php echo esc_attr( $count_cart ); ?>">
        <div class="custom-cart-details d-flex">
            <div class="cart-items">
                <div class="bg-box">
                    <table>
                        <thead>
                        <tr>
                            <th class="product-thumbnail"><?php esc_html_e( '#Contents', 'hocwp-theme' ); ?></th>
                            <th class="product-name">&nbsp;</th>
                            <th class="product-subtotal"><?php esc_html_e( 'Subtotal', 'hocwp-theme' ); ?></th>
                        </tr>
                        </thead>
                        <tbody>
                        <?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 );
                            /**
                             * Filter the product name.
                             *
                             * @param string $product_name Name of the product in the cart.
                             * @param array $cart_item The product in the cart.
                             * @param string $cart_item_key Key for the product in the cart.
                             *
                             * @since 2.1.0
                             */
                            $product_name = apply_filters( 'woocommerce_cart_item_name', $_product->get_name(), $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-thumbnail">
                                        <?php
                                        $thumbnail = apply_filters( 'woocommerce_cart_item_thumbnail', $_product->get_image( $course_thumb_size ), $cart_item, $cart_item_key );

                                        if ( ! $product_permalink ) {
                                            echo $thumbnail; // PHPCS: XSS ok.
                                        } else {
                                            printf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $thumbnail ); // PHPCS: XSS ok.
                                        }
                                        ?>
                                    </td>
                                    <td class="product-name"
                                        data-title="<?php esc_attr_e( 'Product', 'hocwp-theme' ); ?>">
                                        <div class="d-flex fd-c">
                                            <div class="top-info">
                                                <?php
                                                if ( ! $product_permalink ) {
                                                    echo wp_kses_post( $product_name . '&nbsp;' );
                                                } else {
                                                    /**
                                                     * This filter is documented above.
                                                     *
                                                     * @since 2.1.0
                                                     */
                                                    echo wp_kses_post( apply_filters( 'woocommerce_cart_item_name', sprintf( '<a href="%s" class="post-link">%s</a>', esc_url( $product_permalink ), $_product->get_name() ), $cart_item, $cart_item_key ) );
                                                }

                                                do_action( 'woocommerce_after_cart_item_name', $cart_item, $cart_item_key );

                                                // Meta data.
                                                echo wc_get_formatted_cart_item_data( $cart_item ); // PHPCS: XSS ok.

                                                // Backorder notification.
                                                if ( $_product->backorders_require_notification() && $_product->is_on_backorder( $cart_item['quantity'] ) ) {
                                                    echo wp_kses_post( apply_filters( 'woocommerce_cart_item_backorder_notification', '<p class="backorder_notification">' . esc_html__( 'Available on backorder', 'hocwp-theme' ) . '</p>', $product_id ) );
                                                }
                                                ?>
                                                <p class="excerpt"><?php echo get_the_excerpt( $product_id ); ?></p>
                                                <div class="product-quantity">
                                                    <?php
                                                    if ( $_product->is_sold_individually() ) {
                                                        $min_quantity = 1;
                                                        $max_quantity = 1;
                                                    } else {
                                                        $min_quantity = 0;
                                                        $max_quantity = $_product->get_max_purchase_quantity();
                                                    }

                                                    $product_quantity = woocommerce_quantity_input(
                                                        array(
                                                            'input_name'   => "cart[{$cart_item_key}][qty]",
                                                            'input_value'  => $cart_item['quantity'],
                                                            'max_value'    => $max_quantity,
                                                            'min_value'    => $min_quantity,
                                                            'product_name' => $product_name,
                                                        ),
                                                        $_product,
                                                        false
                                                    );

                                                    echo apply_filters( 'woocommerce_cart_item_quantity', $product_quantity, $cart_item_key, $cart_item ); // PHPCS: XSS ok.
                                                    ?>
                                                </div>
                                            </div>
                                            <div class="bottom-info">
                                                <?php
                                                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">' . __( 'Remove', 'hocwp-theme' ) . '</a>',
                                                        esc_url( wc_get_cart_remove_url( $cart_item_key ) ),
                                                        /* translators: %s is the product name */
                                                        esc_attr( sprintf( __( 'Remove %s from cart', 'hocwp-theme' ), wp_strip_all_tags( $product_name ) ) ),
                                                        esc_attr( $product_id ),
                                                        esc_attr( $_product->get_sku() )
                                                    ),
                                                    $cart_item_key
                                                );
                                                ?>
                                            </div>
                                        </div>
                                    </td>
                                    <td class="product-subtotal"
                                        data-title="<?php esc_attr_e( 'Subtotal', 'hocwp-theme' ); ?>">
                                        <span class="lb"><?php _e( 'Price:', 'hocwp-theme' ); ?></span>
                                        <?php
                                        echo apply_filters( 'woocommerce_cart_item_subtotal', WC()->cart->get_product_subtotal( $_product, $cart_item['quantity'] ), $cart_item, $cart_item_key ); // PHPCS: XSS ok.
                                        ?>
                                    </td>
                                </tr>
                                <?php
                            }
                        }
                        ?>
                        </tbody>
                    </table>
                </div>
            </div>
            <div class="cart-summary d-flex">
                <div class="bg-box text-center">
                    <h3><?php printf( __( 'Total %s contents', 'hocwp-theme' ), number_format_i18n( $count_cart ) ); ?></h3>
                    <p class="price-area">
                        <?php wc_cart_totals_subtotal_html(); ?>
                        <span class="vat">(<?php _e( 'VAT included', 'hocwp-theme' ); ?>)</span>
                    </p>
                    <a href="<?php echo esc_url( wc_get_checkout_url() ); ?>"
                       class="btn-checkout btn button"><?php _e( 'Proceed to checkout', 'hocwp-theme' ); ?></a>
                    <button type="submit"
                            class="button<?php echo esc_attr( wc_wp_theme_get_element_class_name( 'button' ) ? ' ' . wc_wp_theme_get_element_class_name( 'button' ) : '' ); ?>"
                            name="update_cart"
                            value="<?php esc_attr_e( 'Update cart', 'hocwp-theme' ); ?>"><?php esc_html_e( 'Update cart', 'hocwp-theme' ); ?></button>

                    <?php do_action( 'woocommerce_cart_actions' ); ?>

                    <?php wp_nonce_field( 'woocommerce-cart', 'woocommerce-cart-nonce' ); ?>
                </div>
                <?php
                if ( wc_coupons_enabled() ) {
                    ?>
                    <div class="bg-box">
                        <div class="coupon">
                            <label for="coupon_code"><?php esc_html_e( 'Coupon code', 'hocwp-theme' ); ?></label>
                            <input type="text" name="coupon_code" class="input-text" id="coupon_code" value=""
                                   placeholder="<?php esc_attr_e( 'Coupon code', 'hocwp-theme' ); ?>"/>
                            <button type="submit"
                                    class="button<?php echo esc_attr( wc_wp_theme_get_element_class_name( 'button' ) ? ' ' . wc_wp_theme_get_element_class_name( 'button' ) : '' ); ?>"
                                    name="apply_coupon"
                                    value="<?php esc_attr_e( 'Apply coupon', 'hocwp-theme' ); ?>"><?php esc_html_e( 'Apply coupon', 'hocwp-theme' ); ?></button>
                            <?php do_action( 'woocommerce_cart_coupon' ); ?>
                        </div>
                    </div>
                    <?php
                }
                ?>
            </div>
        </div>
    </div>

    <?php do_action( 'woocommerce_after_cart_table' ); ?>
</form>

<?php do_action( 'woocommerce_before_cart_collaterals' ); ?>

<div class="cart-collaterals">
    <?php
    /**
     * Cart collaterals hook.
     *
     * @hooked woocommerce_cross_sell_display
     * @hooked woocommerce_cart_totals - 10
     */
    do_action( 'woocommerce_cart_collaterals' );
    ?>
</div>

<?php do_action( 'woocommerce_after_cart' ); ?>

 

5/5 - (1 bình chọn)

Không có bình luận.

Bạn có thể trở thành người đầu tiên để lại bình luận.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *