我需要在产品详细信息页面上的Woocommerce中隐藏“数量”字段(在添加到购物车之前输入数量),并且只显示“添加到购物车”按钮,然后将其放入购物车中数量为1。原因是因为我根据重力形式收集了数量。
答案 0 :(得分:58)
答案 1 :(得分:39)
最安全的方法是使用WordPress内置钩子或过滤器
/**
* @desc Remove in all product type
*/
function wc_remove_all_quantity_fields( $return, $product ) {
return true;
}
add_filter( 'woocommerce_is_sold_individually', 'wc_remove_all_quantity_fields', 10, 2 );
您还可以删除其他产品类型中的数量选择器,您可以在http://www.sutanaryan.com/how-to-remove-product-quantity-selectors-woocommerce/
找到更多内容请注意:有效地使用此选项,无法在购物车中多次使用该产品。随后点击"添加到购物车"将触发警告,该产品只能在您的购物车中一次。这可能并不适合所有人。
答案 2 :(得分:7)
答案 3 :(得分:3)
有一个免费的插件可以删除可能适合您的数量选择器。 http://wordpress.org/extend/plugins/woocommerce-remove-quantity-fields/
答案 4 :(得分:3)
.quantity, .product-quantity{display:none;}
答案 5 :(得分:2)
不需要插件,例如你可以使用css隐藏它。但是,woocommerce只允许您销售1种产品,而无需选择将更多相同的商品添加到购物车中。看看woocommerce->设置。它就在那里。
答案 6 :(得分:1)
我找到了一种简单的方法,只在产品单页中进行,并将数量计数器保存在购物车中。只需将以下代码放在functions.php
中add_action( 'wp_head', 'quantity_wp_head' );
function quantity_wp_head() {
if ( is_product() ) {
?>
<style type="text/css">.quantity, .buttons_added { width:0; height:0; display: none; visibility: hidden; }</style>
<?php }
}
您可以在此处查看woocommerce文档:http://docs.woothemes.com/document/remov-product-content-based-on-category/
答案 7 :(得分:0)
您需要修改的模板是single-product/add-to-cart/variation-add-to-cart-button.php
。
因此,您只需在自己的主题中复制此模板,然后对其进行编辑即可删除数量字段。 它会变成:
<?php
/**
* Single variation cart button
*
* @see http://docs.woothemes.com/document/template-structure/
* @author WooThemes
* @package WooCommerce/Templates
* @version 2.5.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
global $product;
?>
<div class="woocommerce-variation-add-to-cart variations_button">
<button type="submit" class="single_add_to_cart_button button alt"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></button>
<input type="hidden" name="add-to-cart" value="<?php echo absint( $product->id ); ?>" />
<input type="hidden" name="product_id" value="<?php echo absint( $product->id ); ?>" />
<input type="hidden" name="variation_id" class="variation_id" value="0" />
</div>
答案 8 :(得分:0)
这个问题的其他答案没有解决极端情况, woocommerce的“单独出售”选项有效地消除了输入的数量,但阻止了同一产品多次添加到购物车中
在一个用例中,如果您有一个具有自定义属性的产品,而您不希望其数量可编辑,但您仍希望允许用户将具有相同属性的同一产品添加到购物车,则“单独出售”选项无效
在这种情况下,您需要的是此过滤器
add_filter( 'woocommerce_cart_item_quantity', function ( $qty, $item_key, $item ) {
if ( ! empty( $item['custom_data'] ) ) { //Here check for your custom attribute
return sprintf( '1 <input type="hidden" name="cart[%s][qty]" value="1" />', $item_key );
}
return $qty;
}, 10, 3 );
答案 9 :(得分:0)
按照此处其他答案的说明,将产品(或整个商店)设置为“单独出售”现在对我来说是可行的,但我还找到了另一种解决方案:将数量字段隐藏在特定页面ID上。如果有人出于某些原因希望该字段显示在某些页面上而不显示在其他页面上,请考虑以下替代方法:
.page-id-11111 .woocommerce .quantity .qty {
Display:None!important;
}
这将使人们可以多次添加到购物车,并在结帐时编辑数量(如果需要),同时仍在产品简码/页面上隐藏数量字段。这里的更多信息:Remove quantity field from Woocommerce, without preventing multiple cart additions?(我已经对该网站进行了重新设计,因此对于我来说不再需要此解决方案,但这可能会对某人有所帮助。)
答案 10 :(得分:0)
您还可以通过将两个数量都设置为 1 来使用 woocommerce_quantity_input_min
和 woocommerce_quantity_input_max
挂钩。
实际上,在/woocommerce/global/quantity-input.php
模板中,如果min和max具有相同的值,数量字段将被自动隐藏。
// hides the quantity field on the product page
add_filter( 'woocommerce_quantity_input_min', 'hide_woocommerce_quantity_input', 10, 2 );
add_filter( 'woocommerce_quantity_input_max', 'hide_woocommerce_quantity_input', 10, 2 );
function hide_woocommerce_quantity_input( $quantity, $product ) {
// only on the product page
if ( ! is_product() ) {
return $quantity;
}
return 1;
}
代码已经过测试并且可以工作。将它添加到您的活动主题的functions.php。
答案 11 :(得分:-1)
add_filter( 'woocommerce_is_sold_individually', 'baztro_wc_remove_all_quantity_fields', 10, 2 );
function baztro_wc_remove_all_quantity_fields( $return, $product ) {
switch ( $product->product_type ) :
case "variable":
return true;
break;
case "grouped":
return true;
break;
case "external":
return true;
break;
default: // simple product type
return true;
break;
endswitch;
}
我更喜欢库存选项是最好的方法,这里也有一些方法 http://www.baztro.com/hide-quantity-input-field-from-product-page-woocommerce/
答案 12 :(得分:-3)
非常简单,在woocommerce\includes\abstracts\abstract-wc-product.php
中,在woocommerce中找到abstract-wc-product.php
文件
在页面
中查找以下代码$availability = sprintf( __( '%s in stock', 'woocommerce' ), $this->get_total_stock() );
用
替换此代码$availability = sprintf( __( '%s in stock', 'woocommerce' ),'');