1

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

我什至尝试使用

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

没有成功,因为即使计数为 0,价格为 0,并且该项目被禁用,它们也可见且未隐藏。

如何在没有下拉菜单的情况下显示产品页面?更进一步;我删除了所有变体,除了我需要保留的变体。由于同步的插件,我需要将其保持在变体模式。如何在不显示任何下拉菜单的情况下显示它?

示例逻辑:

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

谢谢。

4

1 回答 1

4

重要提示:该代码在选择唯一变体作为默认表单值时才有效:

在此处输入图像描述

以下代码将隐藏在默认情况下仅启用和选择一个变体的可变产品、属性下拉列表和选定的变体价格:

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 行为)

在此处输入图像描述

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

在此处输入图像描述

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

于 2018-09-29T05:09:52.600 回答