如何隐藏产品页面下拉列表中的变体,但是仍然可以通过WooCommerce URL优惠券购买?
如果我将变体设为非活动状态,则会从下拉列表中隐藏,但我收到消息"此产品无法购买"在购物车中。我只是想把它从列表中隐藏起来,而不是完全禁用它。
非常感谢任何帮助。
谢谢!
答案 0 :(得分:3)
以下解决方案适用于我的主题,但您正在运行Bootstrap,因此您可能会遇到问题。
我们将使用option
属性修改您想要隐藏的选项的hidden
标记。获取以下代码并将其添加到主题的functions.php
或自定义插件中:
自定义代码
function custom_woocommerce_dropdown_variation_attribute_options_html( $html, $args )
{
$product = $args[ 'product' ];
$attribute = $args[ 'attribute' ];
$terms = wc_get_product_terms( $product->get_id(), $attribute, array( 'fields' => 'all' ) );
$options = $args[ 'options' ];
if ( empty( $options ) && !empty( $product ) && !empty( $attribute ) ) {
$attributes = $product->get_variation_attributes();
$options = $attributes[ $attribute ];
}
foreach ( $terms as $term ) {
if ( in_array( $term->slug, $options ) && ***SOME CONDITION***) {
$html = str_replace( '<option value="' . esc_attr( $term->slug ) . '" ', '<option hidden value="' . esc_attr( $term->slug ) . '" ', $html );
}
}
return $html;
}
add_filter( 'woocommerce_dropdown_variation_attribute_options_html', 'custom_woocommerce_dropdown_variation_attribute_options_html', 10, 2 );
请注意,某些浏览器无法识别hidden
属性。如果您想要完全跨浏览器兼容性,那么您需要查看How to hide a <option> in a <select> menu with CSS?处的答案。添加css属性style="display:none"
也可能适用于某些浏览器。
高级自定义字段
现在,在上面的代码中,我写了***SOME CONDITION***
。这种情况需要检查是否应该隐藏选项。要添加此信息,我们需要为该属性创建自定义字段。您可以手动执行此操作,但我使用高级自定义字段插件(ACF)执行此操作。
Taxonomy Term
is equal to
Product **your attribute**
。***SOME CONDITION***
并将其替换为get_field( 'hidden', $term ) )
。这是一个ACF函数,它将获取该属性的“隐藏”字段的值。答案 1 :(得分:0)
//Please try adding following code to Functions.php file in Appearance > Editor
function custom_wc_ajax_variation_threshold( $qty, $product ) {
return 10;
}
add_filter( 'woocommerce_ajax_variation_threshold', 'custom_wc_ajax_variation_threshold', 10, 2 );
//If that does not work, please create a temporary admin login and post it here privately.
答案 2 :(得分:0)
我在这里以及在一般情况下都在玩代码方面还很陌生,但是我在Customizer中使用了CSS来隐藏一个称为“学生:”的变体。
superclass
postid-403标识我的产品页面。这似乎正在工作。有什么理由不这样做吗?