隐藏在Woocommerce中默认选择具有唯一变体的可变产品下拉列表

时间:2018-09-29 03:59:01

标签: php css wordpress woocommerce variations

我有一个独特的问题。我使用的插件无法支持该请求。我需要将变体分成单独的项目,但是如果我复制粘贴并将其变成简单的产品,那么我将无法同步产品的数量以跟踪库存。作为一种解决方法,我需要能够禁用不需要的变体,仅保留我需要的变体。但是,这是我遇到麻烦的地方。如果启用了一个变体,那么我不想显示下拉列表,而是希望它看起来像UI上的简单产品。我尝试了所有内容,但无法正常工作。

我什至尝试使用

add_filter( 'woocommerce_hide_invisible_variations', '__return_true', 10, 3 );

,即使计数为0,价格为0,并且已禁用该商品,但它们仍可见且未被隐藏,因此没有成功。

如何显示没有下拉菜单的产品页面?再往前走一步;我删除了所有除我需要保留的变体之外的变体。由于插件已同步,我需要将其保持在变体模式下。如何显示它而不显示任何下拉菜单?

示例逻辑:

如果产品类型是变体且启用的计数== 1,则显示特殊的ui,否则为正常。

谢谢。

1 个答案:

答案 0 :(得分:1)

  

重要提示:仅当唯一变体被选择为默认表单值时,代码才有效

     

enter image description here

以下代码将从仅启用一个变体且默认情况下已选择,属性下拉列表和所选变体价格的变量产品中隐藏:

add_action( 'woocommerce_before_add_to_cart_form', 'single_unique_variation_ui', 10 );
function single_unique_variation_ui(){
    global $product;

    if( ! $product->is_type('variable') )
        return; // Only variable products

    $available_variations = $product->get_available_variations(); // Get available variations
    $default_attributes   = $product->get_default_attributes();   // Get default attributes

    // Only for a unique selected variation by default
    if( ! ( sizeof($available_variations) == 1 && sizeof($default_attributes) == 1 ) )
        return;

    // Get the unique variation
    $variation = reset($available_variations);

    // Loop through
    if( reset($variation['attributes']) == reset($default_attributes) ) :
    // Styles
    ?>
    <style>
        div.woocommerce-variation-price, table.variations { display:none; }
    </style>
    <?php
    endif;
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。

没有代码 (正常的woocommerce行为)

enter image description here

使用代码 (用于隐藏属性下拉列表和价格)

enter image description here

  

它将为您提供与简单产品相同的UI