php 如何在WooCommerce中,即使购物车是空的,也要动态地将项目添加到购物车[关闭]

xzv2uavs  于 2023-10-15  发布在  PHP
关注(0)|答案(1)|浏览(113)

已关闭,此问题需要details or clarity。它目前不接受回答。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

4天前关闭。
Improve this question
我有一个定制的cart-page,看起来像这样:x1c 0d1x其背后的思想是,只有选中的项目应该是结帐的一部分,而不是所有项目(默认)。
为了使其正常运行,当**点击“进行结账”button**时,应通过以下操作清空购物车:

WC()->cart ->empty_cart();

并将勾选的项目加上所有的数量等。因此,当打开结账页面时,在审查订单table中的计算是正确的。可以通过以下操作添加项目:

WC()->cart->add_to_cart($product_id);

问题:当自动执行WC()->cart ->empty_cart();时,所有项目+table都被删除,导致WC()->cart->add_to_cart($product_id);无法工作。

购物车页面中可能有两种显示:显示

和**“您的购物车当前为空”**显示

在表格显示中,可以使用前面提到的操作添加项目,但是在“您的购物车当前为空”显示中,它不起作用。

问题:如何以编程方式在woocommerce中添加一个项目,以便在“您的购物车当前为空”显示中,可以向表中添加新项目/生成表。

qhhrdooz

qhhrdooz1#

请试着遵循这个:

第一步:

在输入复选框中,您需要将class分配为“sss-item-select”,并在值中添加cart_item_key,如下所示:

<input type="checkbox" class="sss-item-select" value="<?= $cart_item_key ?>"/>

第二步:

然后在Child-theme > function.php中插入以下代码:

add_action('wp_footer', function () {
if(is_cart()){
    ?>
        <script>
            jQuery(document).ready(function($) {
                // console.log(getCookie('item-key'));
                if($('.sss-item-select').length > 0 && getCookie('item-key')){
                    var items_c = getCookie('item-key').split(',');
                    $('.sss-item-select').each(function() {
                        if(items_c.includes($(this).val())){
                            $(this).attr('checked',true);
                        }
                    });
                }
                $('.sss-item-select').click(function() {
                    var checked = [];
                    $('.sss-item-select').each(function() {
                        if ($(this).is(':checked')) {
                            checked.push($(this).val());
                        }
                    });
                    setCookie('item-key', checked, 9);
                });
                
            });

            function setCookie(cname, cvalue, exdays) {
                const d = new Date();
                d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
                let expires = "expires=" + d.toUTCString();
                document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
            }
            function getCookie(cname) {
                let name = cname + "=";
                let ca = document.cookie.split(';');
                for(let i = 0; i < ca.length; i++) {
                    let c = ca[i];
                    while (c.charAt(0) == ' ') {
                    c = c.substring(1);
                    }
                    if (c.indexOf(name) == 0) {
                    return c.substring(name.length, c.length);
                    }
                }
                return "";
            }
        </script>
    <?php
}
});

add_action('wp', function () {
    if (isset($_COOKIE['item-key']) && !empty($_COOKIE['item-key']) && is_checkout()) {
        $item_keys_c = $_COOKIE['item-key'];
        $item_keys_c = explode(',', $item_keys_c);
        foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
            if (!in_array($cart_item_key, $item_keys_c)) {
                WC()->cart->remove_cart_item($cart_item_key);
            }
        }
        setcookie('item-key', '', 1,'/');
    }
});

我希望它会起作用:)

相关问题