如何将控制台日志数据提供给WooCommerce Cart?

Gro*_*nfo 5 php wordpress jquery woocommerce woocommerce-bookings

我正在使用第三方小工具,他们提供实时可用性,成本和立即预订按钮.当客户点击立即预订按钮时,它正在使用他们想要忽略的预订小工具.

在做了一些谷歌研究之后,当一些人点击现在的书籍按钮时,我能够在控制台日志下获得正确的标题和费用.

$w.event.subscribe("item.book.click", function(item) { 
   console.log(item);
   console.log("Title " + item[3].Name + " (Date " + item[4].date  + ", Period " + item[4].period + ", Adults " + item[4].adults + ", Children " + item[4].children + ", Infants " + item[4].infants + ")");
   console.log("Price " + item[3].Availability.Cost);
});
Run Code Online (Sandbox Code Playgroud)

WooCommerce简单产品现场演示:http://plugin.seminyak.holiday/product/the-layar/#/accom/66268

单击立即预订按钮,查看控制台记录它返回的标题和价格值,但如何在弹出按钮中触发控制台数据值,如立即购买添加项目到购物车.

当用户点击ADD ITEM TO CART时,它会将数据添加到/ cart page + basket中.如果有人点击立即购买按钮,它将获取数据并重定向用户on / checkout页面,其中包含控制台标题和价格

如果您有任何疑问,请告诉我.

Gro*_*nfo 0

感谢您的支持和回复,经过大量研究后,我通过以下代码得到了结果。

为了获得最终结果,我必须安装 WC Fields Factory 插件并使用控制台日志或变量 def 传递动态值

第 1 步:在 .js 文件下使用此代码,并确保单击按钮时触发它。

$w.event.subscribe("item.book.click", function(item) {
    $('[name="room_type"]')[0].value = item[3].Name;
    $('[name="date"]')[0].value = item[4].date;
    $('[name="nights"]')[0].value = item[4].period;
    $('[name="adults"]')[0].value = item[4].adults;
    $('[name="children"]')[0].value = item[4].children;
    $('[name="infants"]')[0].value = item[4].infants;
    $('[name="cost"]')[0].value = item[3].Availability.Cost;
    $('[name="add-to-cart"]')[0].click(); // Clicked on add to cart button
});
Run Code Online (Sandbox Code Playgroud)

function.php 代码动态获取自定义成本值。

/* Price Update Based On Plugin WC Field */

function calculate_cart_total( $cart_object ) {
    $additionalPrice = 0;

    foreach ( $cart_object as $key => $valueArray ) {
        if(is_array($valueArray)) {
            foreach ( $valueArray as $k => $value ) {
                if($value['wccpf_cost']) {
                    $additionalPrice = $value['wccpf_cost']['user_val'];
                }
            }
        }
    }

    foreach ( WC()->cart->get_cart() as $key => $value ) {
        if( method_exists( $value['data'], "set_price" ) ) {
            $value['data']->set_price( $additionalPrice );
        } else {
            $value['data']->price = ($additionalPrice );
        }     
    }
}
add_action( 'woocommerce_before_calculate_totals', 'calculate_cart_total', 99 );

/* before addto cart, clear cart values */
add_filter( 'woocommerce_add_to_cart_validation', 'woo_custom_add_to_cart_before' );

function woo_custom_add_to_cart_before( $cart_item_data ) {

    global $woocommerce;
    $woocommerce->cart->empty_cart();

    // Do nothing with the data and return
    return true;
}
Run Code Online (Sandbox Code Playgroud)

在 WC Fields Factory 下,我创建了 room_type、日期、夜晚、成人、儿童、婴儿、成本字段,并且 onclick 值会相应地动态获取。