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.

enter image description here

<?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">&nbsp;</th>             <th class="product-thumbnail">&nbsp;</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">&times;</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 &rarr;', '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

Popular posts from this blog

PHP DOM loadHTML() method unusual warning -

python - How to create jsonb index using GIN on SQLAlchemy? -

c# - TransactionScope not rolling back although no complete() is called -