Php WooCommerce-隐藏特定的变体

Php WooCommerce-隐藏特定的变体,php,wordpress,woocommerce,coupon,variations,Php,Wordpress,Woocommerce,Coupon,Variations,我如何在产品页面的下拉列表中隐藏变体,但仍然允许通过WooCommerce URL优惠券购买 如果我使变体处于非活动状态,它将从下拉列表中隐藏,但我在购物车中收到消息“此产品无法购买”。我只是想从列表中隐藏它,而不是完全禁用它 非常感谢您的帮助 谢谢大家! 以下解决方案适用于我的主题,但您正在运行引导,因此可能会出现问题 我们将使用hidden属性修改要隐藏的选项的选项标记。获取以下代码并将其添加到主题的functions.php或自定义插件中: 自定义代码 function custom_wo

我如何在产品页面的下拉列表中隐藏变体,但仍然允许通过WooCommerce URL优惠券购买

如果我使变体处于非活动状态,它将从下拉列表中隐藏,但我在购物车中收到消息“此产品无法购买”。我只是想从列表中隐藏它,而不是完全禁用它

非常感谢您的帮助


谢谢大家!

以下解决方案适用于我的主题,但您正在运行引导,因此可能会出现问题

我们将使用
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 );
函数自定义\u商业\u下拉列表\u变化\u属性\u选项\u html($html,$args)
{
$product=$args['product'];
$attribute=$args['attribute'];
$terms=wc_get_product_terms($product->get_id(),$attribute,数组('fields'=>'all'));
$options=$args['options'];
if(空($options)&!空($product)&&!空($attribute)){
$attributes=$product->get_variation_attributes();
$options=$attributes[$attribute];
}
foreach($terms作为$term){
if(在数组中($term->slug$options)&&&&***某些条件***){
$html=str_replace('Attributes.Tick yes以启用存档?并将其键入“Select”。然后在配置术语下添加属性术语
  • 安装到你的WordPress上
  • 创建一个新的字段组
  • 在字段组中,如果
    分类术语
    等于
    产品**您的属性**
    ,则创建一条规则以显示此字段组
  • 在“字段”组中,创建字段标签为“隐藏”的字段,字段类型为“真/假”,并根据需要设置其他设置
  • 发布/更新字段组
  • 返回到步骤1中创建的要隐藏的术语。您应该有一个勾选框来选择是否隐藏属性。勾选所有适用的选项
  • 创建具有由产品属性组成的变体的可变产品
  • 在自定义代码中,删除
    ***某些条件***
    ,并将其替换为
    获取字段('hidden',$term))
    。这是一个ACF函数,它将获取该属性tern的'hidden'字段的值

  • 毕竟,您勾选为隐藏的术语不应该出现在产品页面的下拉列表中。在我的示例中,您可以看到下拉列表中缺少绿色。

    我对这里非常陌生,通常会使用代码,但我在自定义程序中使用css来隐藏一个称为“学生:”的变体


    postid-403标识了我的产品页面。这似乎有效。有什么理由不这样做吗?

    这里是产品的链接。谢谢。属性可能因产品而异。我们希望能够添加多个隐藏属性。这对我们来说不是一个好的解决方案。如果我们f.i.可以隐藏所有可下载的变量,这是最好的解决方案可以从下拉列表中选择,并将该选项用于隐藏属性。您好,谢谢您的详细回复。我无法在3中选择产品属性。这不是一个这样的选项。@Virik是否在产品中创建自定义产品属性?如果是,则不起作用。在WordPress管理菜单中,您应该转到
    产品->属性并创建一个select类型的属性。然后使用该属性在变量product中进行更改。它应该在高级自定义字段规则框中可选择。我添加了一个名为“avgang”的属性,并基于该属性向产品添加了一个变体,但ACF中仍然没有选项。您可以在此处看到一个屏幕截图:@Virik好的,我发现了其他可能导致问题的内容。在属性选项中,勾选“启用存档”的“是”-如果您希望此属性在您的存储中具有产品存档,请启用此属性。这会使属性“public”,因此可由ACF选择。很好。现在ACF设置正确,但在变体中没有显示:因为使用CSS隐藏选项与IE不兼容,更重要的是,与Safari不兼容。(你应该在Iphone上看到隐藏选项)
    
    .postid-403 option[value=Student]{display: none;}