wordpress 在单页产品上添加一个按钮,将产品添加到购物车中,金额为$

azpvetkf  于 2023-03-29  发布在  WordPress
关注(0)|答案(1)|浏览(248)

我想在我的单页模板中显示一个按钮,在产品描述下显示“在家免费试用”,当您按下按钮时,它会将产品添加到woocommerce购物车中,金额为0$。我正在使用woocommerce与elementor。我在代码片段上有以下php代码:

function add_try_at_home_button() {
    global $product;

    $product_id = $product->get_id();
    $variation_id = 0;
    $variation_data = array();

    if ($product->is_type('variable')) {
        $variation_id = $product->get_variation_id();
        $variation_data = $product->get_variation_attributes();
    }

    echo '<button class="btn-at-home" data-product-id="' . esc_attr($product_id) . '" data-variation-id="' . esc_attr($variation_id) . '" data-variation-data="' . esc_attr(json_encode($variation_data)) . '">Try at Home</button>';
}

add_action('woocommerce_single_product_summary', 'add_try_at_home_button', 25);

我在一个片段上也有以下JS代码:

jQuery(document).ready(function($) {
    $('button.btn-at-home').on('click', function(e) {
        e.preventDefault();

        var product_id = $(this).data('product-id');
        var variation_id = $(this).data('variation-id');
        var variation_data = $(this).data('variation-data');

        console.log('Product ID: ' + product_id);
        console.log('Variation ID: ' + variation_id);
        console.log('Variation data: ' + variation_data);

        $.ajax({
            type: 'POST',
            url: wc_add_to_cart_params.ajax_url,
            data: {
                action: 'woocommerce_add_to_cart',
                product_id: product_id,
                variation_id: variation_id,
                quantity: 1,
                variation: variation_data
            },
            success: function(response) {
                if (response.error & response.product_url) {
                    window.location.href = response.product_url;
                    return;
                } else {
                    window.location.href = wc_add_to_cart_params.cart_url;
                }
            },
        });
    });
});

在模板中,我添加了一个HTML小部件,并传递了以下代码:

<button class="btn-at-home" data-product-id="<?php echo esc_attr(get_the_ID()); ?>" data-variation-id="<?php echo esc_attr($product->get_variation_id()); ?>" data-variation-data='<?php echo esc_attr(json_encode($product->get_variation_attributes())); ?>'>Try at Home for free</button>

当我按下按钮,它会转到购物车页面,但它不会将产品添加到购物车。
我的控制台说:
产品ID:(索引):388变更ID:return();?〉(index):389变化数据:());?〉
我试图了解值是否通过php代码到达按钮,但它不起作用。
如果我将产品的id硬编码到html代码中,它会将产品添加到购物车中,没有任何问题:

<button class="btn-at-home" data-product-id="16985" data-variation-id="17429" data-variation-data='{"attribute_pa_color":"blue"}'>Try at Home</button>

据我所知,PHP代码没有被执行。
有人能帮我一下吗?
我的PHP和JS的编程技巧是非常基本的。
先谢了。
PM

6rqinv9w

6rqinv9w1#

按钮应该用第一个PHP代码生成。你应该跳过第三步。如果按钮没有生成,你在错误的地方添加代码。最好把它放在子主题的function.php文件中

相关问题