php - How to remove the quantity field from cart page for specific product attribute WooCommerce -
i need hide "quantity" field specific product in cart.php
here cart.php . attribute color quantity field should hide. have try $attributes = $product->get_attributes();
failed or missing . have share cart image , cart.php code. please me.
<?php if ( ! defined( 'abspath' ) ) { exit; // exit if accessed directly } wc_print_notices(); do_action( 'woocommerce_before_cart' ); ?> <form id="cart-table" action="<?php echo esc_url( wc()->cart->get_cart_url() ); ?>" method="post"> <?php do_action( 'woocommerce_before_cart_table' ); ?> <table class="shop_table cart" cellspacing="0"> <thead> <tr> <th class="product-remove"> </th> <th class="product-thumbnail"> </th> <th class="product-name"><?php _e('product', 'yit'); ?></th> <th class="product-price"><?php _e('price', 'yit'); ?></th> <th class="product-quantity"><?php _e('quantity', 'yit'); ?></th> <th class="product-subtotal"><?php _e('total', 'yit'); ?></th> </tr> </thead> <tbody> <?php do_action( 'woocommerce_before_cart_contents' ); ?> <?php foreach ( wc()->cart->get_cart() $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 ) ) { ?> <tr class = "<?php echo esc_attr( apply_filters('woocommerce_cart_item_class', 'cart_item', $cart_item, $cart_item_key ) ); ?>"> <td class="product-remove"> <?php echo apply_filters( 'woocommerce_cart_item_remove_link', sprintf('<a href="%s" class="remove" title="%s">×</a>', esc_url( wc()->cart->get_remove_url( $cart_item_key ) ), __('remove item', 'yit') ), $cart_item_key ); ?> </td> <td class="product-thumbnail"> <?php $thumbnail = apply_filters( 'woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key ); if ( ! $_product->is_visible() ) echo $thumbnail; else printf( '<a href="%s">%s</a>', $_product->get_permalink( $cart_item ), $thumbnail ); ?> </td> <td class="product-name"> <?php if ( ! $_product->is_visible() ) echo apply_filters( 'woocommerce_cart_item_name', $_product->get_title(), $cart_item, $cart_item_key ); else echo apply_filters( 'woocommerce_cart_item_name', sprintf( '<a href="%s">%s</a>', $_product->get_permalink( $cart_item ), $_product->get_title() ), $cart_item, $cart_item_key ); // meta data remove 'lala' echo here rupom echo ''. wc()->cart->get_item_data( $cart_item ); // backorder notification if ( $_product->backorders_require_notification() && $_product->is_on_backorder( $cart_item['quantity'] ) ) echo '<p class="backorder_notification">' . __('available on backorder', 'yit') . '</p>'; ?> </td> <td class="product-price"> <?php echo apply_filters( 'woocommerce_cart_item_price', wc()->cart->get_product_price( $_product ), $cart_item, $cart_item_key ); ?> </td> <td class="product-quantity"> <?php if ( $_product->is_sold_individually() ) { $product_quantity = sprintf( '1 <input type="hidden" name="cart[%s][qty]" value="1" />', $cart_item_key ); }else { $product_quantity = woocommerce_quantity_input( array( 'input_name' => "cart[{$cart_item_key}][qty]", 'input_value' => $cart_item['quantity'], 'max_value' => $_product->backorders_allowed() ? '' : $_product->get_stock_quantity(), 'min_value' => '0' ), $_product, false ); } echo apply_filters( 'woocommerce_cart_item_quantity', $product_quantity, $cart_item_key ); ?> </td> <td class="product-subtotal"> <?php echo apply_filters( 'woocommerce_cart_item_subtotal', wc()->cart->get_product_subtotal( $_product, $cart_item['quantity'] ), $cart_item, $cart_item_key ); ?> </td> </tr> <?php } } do_action( 'woocommerce_cart_contents' ); ?> <tr> <td colspan="6" class="actions"> <?php if ( wc()->cart->coupons_enabled() ) { ?> <div class="coupon"> <label for="coupon_code"><?php _e('coupon', 'yit'); ?>:</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', 'yit'); ?>" /> <?php do_action('woocommerce_cart_coupon'); ?> </div> <?php } ?> <input type="submit" class="button" name="update_cart" value="<?php _e('update cart', 'yit'); ?>" /> <input type="submit" class="checkout-button button alt" name="proceed" value="<?php _e('proceed checkout →', 'yit'); ?>" /> <?php do_action('woocommerce_cart_actions'); ?> <?php wp_nonce_field( 'woocommerce-cart') ?> </td> </tr> <?php do_action( 'woocommerce_after_cart_contents' ); ?> </tbody> </table> <?php do_action( 'woocommerce_after_cart_table' ); ?> </form> <div class="cart-collaterals row-fluid"> <?php do_action('woocommerce_cart_collaterals'); ?> <?php //woocommerce_cart_totals(); ?> <?php woocommerce_shipping_calculator(); ?> </div> <?php do_action( 'woocommerce_after_cart' ); ?>
here quantity field code
<td class="product-quantity"> <?php if ( $_product->is_sold_individually() ) { $product_quantity = sprintf( '1 <input type="hidden" name="cart[%s][qty]" value="1" />', $cart_item_key ); }else { $product_quantity = woocommerce_quantity_input( array( 'input_name' => "cart[{$cart_item_key}][qty]", 'input_value' => $cart_item['quantity'], 'max_value' => $_product->backorders_allowed() ? '' : $_product->get_stock_quantity(), 'min_value' => '0' ), $_product, false ); } echo apply_filters( 'woocommerce_cart_item_quantity', $product_quantity, $cart_item_key ); ?> </td>
$attributes = $product->get_attributes();
returns array of product's attributes, @ least need kind of conditional logic returning attributes alone not enough.
if notice line:
echo apply_filters( 'woocommerce_cart_item_quantity', $product_quantity, $cart_item_key );
you don't need override cart.php
template @ all. can filter quantity string theme's function.php.
additionally, attribute taxonomy pa_
prepended slug can use of wordpress' core functions on it. example: 'color' attribute 'pa_color' taxonomy , can check existence of term on post (a product post of specific type) using has_term()
untested, think should work:
add_filter( 'woocommerce_cart_item_quantity', 'so_30926084_cart_item_quantity', 10, 2 ); function so_30926084_cart_item_quantity( $product_quantity, $cart_item_key ){ $cart_item = wc()->cart->cart_contents[ $cart_item_key ]; if( has_term( 'blue', 'pa_color', $cart_item['data'] ) ){ $product_quantity = ''; } return $product_quantity; }
edit
assuming attribute called color , assuming is taxonomy (as discovering no longer case) use following (be sure delete above first) remove quantity variation color attribute.
add_filter( 'woocommerce_cart_item_quantity', 'so_30926084_cart_item_quantity', 10, 2 ); function so_30926084_cart_item_quantity( $product_quantity, $cart_item_key ){ $cart_item = wc()->cart->cart_contents[ $cart_item_key ]; if( $cart_item['data']->is_type( 'variation' ) ){ $attributes = $cart_item['data']->get_attributes(); // var_dump( $attributes ); if( array_key_exists( 'pa_color', $attributes ) ){ $product_quantity = ''; } } return $product_quantity; }
if incorrect array key, can uncomment var_dump()
line examine $attributes (put variation in cart , go cart page) , determine correct array key information.
Comments
Post a Comment