Идеи по сохранению постоянных данных корзины WooCommerce в заголовке страниц, не относящихся к WordPress, в одном домене - PullRequest
0 голосов
/ 08 декабря 2018

Наша электронная коммерция построена на WordPress / WooCommerce.Остальная часть сайта построена в Laravel.Например, когда пользователь на domain.com/shop добавляет товар в свою корзину, а затем переходит от domain.com/shop к domain.com/laravel-page, мы хотели бы сохранить значок корзины вво главе с любыми продуктами, которые они добавили.Удаление товаров из виджета заголовка не так важно, и просто увидеть их с помощью кнопок «Продолжить» / «Оформить заказ».Есть идеи по выполнению этого?Я знаю, что WooCommerce устанавливает серию файлов cookie ... это то, что мы можем использовать?Спасибо!

1 Ответ

0 голосов
/ 09 декабря 2018

Предполагая, что ваши WordPress и Laravel находятся в одном домене, вы можете сделать ajax-вызов в бэкэнд WordPress, чтобы получить данные корзины.

jQuery, чтобы сделать ajax-вызов

(function ($) {
    $( document ).ready(function() {
        $.ajax ({
            url: '/wp-admin/admin-ajax.php',
            type: 'POST',
            dataType: 'JSON',
            success: function (resp) {
                if (resp.success) {
                    // build your cart details
                }
                else {
                    // handle the error
                }
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert ('Request failed: ' + thrownError.message) ;
            },
        }) ;
    }) ;
})(jQuery) ;

В вашей теме functions.php файл зарегистрируйте вызов ajax

<?php
// if the ajax call will be made from JS executed when user is logged into WP
add_action ('wp_ajax_call_your_function', 'get_woocommerce_cart_data') ;
// if the ajax call will be made from JS executed when no user is logged into WP
add_action ('wp_ajax_nopriv_call_your_function', 'get_woocommerce_cart_data') ;

function get_woocommerce_cart_data () {
    global $woocommerce;
    $items = $woocommerce->cart->get_cart();
    // build the output array
    $out = array();
    foreach($items as $item => $values) { 
        // get product details
        $getProductDetail = wc_get_product( $values['product_id'] );
        $out[$item]['img'] = $getProductDetail->get_image();
        $out[$item]['title'] = $getProductDetail->get_title();
        $out[$item]['quantity']  = $values['quantity'];
        $out[$item]['price'] = get_post_meta($values['product_id'] , '_price', true);
    }
    // retun the json
    wp_send_json_success($out);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...