【问题标题】:Hide variable product dropdown that has a unique variation selected by default in Woocommerce隐藏在 Woocommerce 中默认选择具有唯一变体的可变产品下拉列表
【发布时间】:2019-03-05 00:29:25
【问题描述】:

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

我什至尝试过使用

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

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

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

示例逻辑:

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

谢谢。

【问题讨论】:

    标签: php css wordpress woocommerce variations


    【解决方案1】:

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

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

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

    使用代码 (隐藏属性下拉菜单和价格)

    它将为您提供与简单产品相同的用户界面

    【讨论】:

    • 非常感谢您的帮助!我非常感激。效果很好!
    • 我有一个类似的问题,因此想加入这个问题:我有一个基于产品颜色的产品变体:红色或绿色。现在红色产品应该有属性“机洗 30 度”和绿色产品“机洗 40 度”。所以我为“用于变化”选择了这两个属性。我还看到了颜色的选择。不幸的是,还显示了属性“机洗”的选择。但这根本不应该是可选择的,它应该分配给一个固定的属性。您对此有解决方案吗?
    • 这就是我尝试的方式(截图:ibb.co/hdhBf1h)。但是在前端有一个用于 Machinewash 属性的 Select Field... 这个 Select Field 设置正确:如果您选择红色衬衫,它只允许您选择 30°,如果您选择绿色衬衫,则允许选择 40° .但机洗属性应该只是一个信息,而不是可选属性。
    • 还有其他方法可以为每个产品变体添加单独的属性吗?
    • @MartinP。您应该需要为相关变量产品添加一些 jQuery 代码,以使其按您的意愿工作。
    猜你喜欢
    • 2019-07-25
    • 2020-05-03
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    相关资源
    最近更新 更多