Как передать данные журналов консоли в корзину WooCommerce?

Я использую сторонние гаджеты, где они предоставляют доступность, стоимость и кнопку «Забронировать сейчас». Когда клиент нажимает кнопку «Забронировать сейчас», он использует гаджет бронирования, который я хочу игнорировать.

После некоторых исследований Google, я могу получить правильное название & стоит под консольными логами, когда кто-то нажимает на кнопку забронировать сейчас.

$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);
});

Простой продукт WooCommerce Live Demo: http://plugin.seminyak.holiday/product/the-layar/#/accom/66268

Нажмите на Забронируйте сейчас Кнопка и увидеть журнал консоли, он возвращает значение заголовка & Цена, но как вызвать значение данных консоли во всплывающих кнопках, таких как КУПИТЬ СЕЙЧАС & ДОБАВИТЬ ПУНКТ В КОРЗИНУ.

Когда пользователь нажимает на ДОБАВИТЬ ПУНКТ В КОРЗИНУ это добавит данные в / корзина + корзина и если кто-то нажмет на КУПИТЬ СЕЙЧАС Кнопка будет принимать данные и перенаправить пользователя на /проверять, выписываться страница с заголовком и ценой консоли

Если у вас есть какие-либо вопросы, пожалуйста, дайте мне знать.

6

Решение

Как это сделано в этом ответе:

Захват javascript console.log?

Вы можете быть в состоянии захватить консольный журнал, когда страница загружается и запускает события на основе выходных данных.

(function(){
var oldLog = console.log;
console.log = function (message) {
if(message.indexOf("Price") !== -1){
var price = message.split(' ')[1]
// Do something with the price...
}
oldLog.apply(console, arguments);
};
})();

Возможно, вам придется сделать что-то хитрое, так как описание и цена указаны в двух отдельных журналах.

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
});

Код 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;
}

Под фабрикой WC Fields Factory я создал room_type, date, ночи, взрослых, детей, младенцев, поля стоимости и значение onclick, которое соответственно подбирается динамически.

0

По вопросам рекламы [email protected]