检查产品捆绑是否有捆绑追加销售(可选商品)或简单的捆绑商品

问题描述 投票:0回答:1

我对编码还很陌生,正在尝试编辑我们的 WC 网站。 希望我的英语足够好,能够传递所需的信息……

我做了一个函数来检查产品是否是一个类型捆绑包并且它工作正常。 不幸的是,我需要我的功能在带有可选项目的捆绑包和没有可选捆绑项目的捆绑包之间有所不同。

-- 编辑更新:我改变了我的策略,因为我不需要 JS 来进行此检查。 但是,我还是缺乏所需的 php 基础知识。

add_action ( 'woocommerce_before_add_to_cart_form', 'ino_qty_main_function');

    function ino_qty_main_function() {
        global $product;
        if ( $product->is_type('bundle') ) {
            $hasqty = 5;
                $bundleditems = $product->get_bundled_items();
                foreach ( $bundled_items as $bundleditem ) {
                    if ( $bundleditem->is_optional('yes')) {
                        $hasqty = 1;
                        echo "<h2> 1 product optional </h2>";
                    } else {
                        $hasqty = 0;
                        echo "<h2> 1 product not optional </h2>";
                    }
                }
            echo "<h2> final hasqty" . $hasqty . "</h2>";
        }

    }

这是一个检查其工作原理的函数[不使用IDE,在临时站点上工作]。 我很确定我缺乏如何执行此检查的基本知识。

在捆绑插件文件中,我发现了接下来应该有助于正确构建此功能的内容:

public function is_optional() {
        return 'yes' === $this->optional;
    }

还有存储数据的数组:

private function load_data() {

        // Defaults.
        $defaults = array(
            'quantity_min'                          => 1,
            'quantity_max'                          => 1,
            'quantity_default'                      => 1,
            'priced_individually'                   => 'no',
            'shipped_individually'                  => 'no',
            'override_title'                        => 'no',
            'title'                                 => '',
            'override_description'                  => 'no',
            'description'                           => '',
            'optional'                              => 'no',
            'hide_thumbnail'                        => 'no',
            'discount'                              => '',
            'override_variations'                   => 'no',
            'override_default_variation_attributes' => 'no',
            'allowed_variations'                    => false,
            'default_variation_attributes'          => false,
            'single_product_visibility'             => 'visible',
            'cart_visibility'                       => 'visible',
            'order_visibility'                      => 'visible',
            'single_product_price_visibility'       => 'visible',
            'cart_price_visibility'                 => 'visible',
            'order_price_visibility'                => 'visible',
            'stock_status'                          => null,
            'max_stock'                             => null
        );

我想要实现的是检查产品页面是否有捆绑商品,如果有的话 - 检查是否至少有一个捆绑产品是可选的。 如果是, $hasqty = 1 ,否则 $hasqty=0 。

编辑2: 可以开始工作了!并意识到我错过了很多基础知识。

add_action ( 'woocommerce_before_add_to_cart_form', 'ino_qty_main_function');

    function ino_qty_main_function() {
        global $product;
        if ( $product->is_type('bundle') ) {
            $hasqty = 0;
                $bundleditems = $product->get_bundled_items();
                foreach ( $bundleditems as $bundleditem ) {
                    if ($bundleditem->is_optional('yes')) {
                
                        $hasqty++ ;
                        echo "<h2> 1 product optional </h2>";
                    }
                }
        
            echo "<h2> final hasqty" . $hasqty . "</h2>";
        }
    }

剩下的就是调整它以添加按钮,而不是打印测试值。

php woocommerce find bundle product
1个回答
0
投票
add_action ( 'woocommerce_before_add_to_cart_form', 'ino_qty_main_function');

    function ino_qty_main_function() {
        global $product;
        if ( $product->is_type('bundle') ) {
            $hasqty = 0;
                $bundleditems = $product->get_bundled_items();
                foreach ( $bundleditems as $bundleditem ) {
                    if ($bundleditem->is_optional('yes')) {
                
                        $hasqty++ ;
                        echo "<h2> 1 product optional </h2>";
                    }
                }
        
            echo "<h2> final hasqty" . $hasqty . "</h2>";
        }
    }

计算可选捆绑物品! 由于我们将仅使用简单捆绑包或仅使用可选捆绑包 - 这足以让我继续处理其余代码。

希望它也能帮助将来的人。 与 WooCommerce 捆绑插件一起使用

© www.soinside.com 2019 - 2024. All rights reserved.