php - productos - plugin quitar cosas en woocommerce
Cómo eliminar el campo de cantidad de la página del carrito para el atributo de producto específico WooCommerce (1)
$attributes = $product->get_attributes();
solo devuelve una matriz de atributos del producto, por lo que al menos necesitaría algún tipo de lógica condicional, ya que devolver los atributos por sí solos no sería suficiente.
Si notas esta línea:
echo apply_filters( ''woocommerce_cart_item_quantity'', $product_quantity, $cart_item_key );
No necesita sobrescribir la plantilla cart.php
en absoluto. Simplemente puede filtrar la cadena de cantidad desde la función de su tema.php.
Además, un atributo es solo una taxonomía con pa_
de la babosa para que pueda usar cualquiera de las funciones principales de WordPress en ella. Por ejemplo: un atributo ''color'' es simplemente una taxonomía ''pa_color'' y puede verificar la existencia de un término en una publicación (un producto es simplemente una publicación de un tipo específico) usando has_term()
No probado, pero creo que esto debería funcionar:
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;
}
Editar
Suponiendo que su atributo se llama Color y suponiendo que es una taxonomía (ya que estoy descubriendo que esto ya no es el caso), podría usar lo siguiente (asegúrese de eliminar lo anterior) para eliminar la cantidad de cualquier variación con un color atributo.
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;
}
Si esta es la clave de matriz incorrecta, puede eliminar el comentario de la línea var_dump()
para examinar los $ atributos (poner una variación en el carro e ir a la página del carro) y determinar la información correcta de la clave del arreglo.
Necesito ocultar el campo "cantidad" para un producto específico en cart.php
Aquí está mi carrito.php . Si el atributo es Color, el campo de cantidad debe ocultarse. He intentado $attributes = $product->get_attributes();
pero fallé o me faltaba algo. Compartí la imagen del carrito y mi código cart.php. Por favor alguien me ayude
<?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() 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 ) ) {
?>
<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 this 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'' from echo here by 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 to 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'' ); ?>
Aquí está el código de campo de cantidad
<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>