如何在WooCommerce中获取用户输入以覆盖价格

时间:2015-07-22 23:23:22

标签: javascript php wordpress cookies woocommerce

我现在一整天都在这里工作。在查看了大量文档之后,这就是我到目前为止所提出的...我认为我已经接近但我已经挂断了通过Cookie将JS中的变量传递给PHP。我在这里错过了什么?我应该提到这是在WordPress上使用WooCommerce完成的。

当有人从产品页面上的下拉列表中选择特定变体时,会显示一个输入字段。 编辑:添加更好的上下文。此input已嵌套。

<form class="variations_form cart" method="post" enctype="multipart/form-data" data-product_id="28664" data-product_variations=...">
    <div class="single_variation">
        <span class="price">
            <div class="custom-amount-trigger">
            <label>Amount</label>
            <input type="number" id="custom_amount" class="custom-amount" placeholder="Enter Whole Number"/>
        </div>
    </div>
</form>

然后当输入失去焦点(onblur)时,它应该创建cookie。此代码是footer.php中已经运行的脚本的一部分。我已将下面的代码添加到脚本中以创建cookie。我觉得这是出错的地方(?)。

$(document).on('onblur','custom-amount', function(){
    price = "price=" + escape(document.getElementByID("custom_amount").value) + "; ";
document.cookie = "customAmount=" + price + "path=/";
})

然后,在我的functions.php中,我有以下内容,它应该获取cookie信息。

add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' );

function add_custom_price( $cart_object ) {
    $custom_price = $_COOKIE["customAmount"];
    $target_product_ids = array (31708, 31418, 28825);

    foreach ( $cart_object->cart_contents as $key => $value ) {

        if ( in_array( $value['variation_id'], $target_product_ids ) ) {
            $value['data']->price = $custom_price;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

你应该这样做:

$('#custom_amount').on('blur', function(){
    price = "price=" + escape($("#custom_amount").val()) + "; ";
    document.cookie = "customAmount=" + price + "path=/";
 })

假设您正在使用jquery