Woocommerce - выставлять данные ajax в пользовательский javascript - PullRequest
0 голосов
/ 09 декабря 2018

Я пытаюсь создать пользовательскую страницу со списком продуктов Woocommerce, которую я настроил нормально.

Однако, когда я пытаюсь настроить добавление AJAX в корзину, я не могу понять, каклокализуйте мой сценарий с конечными точками ajax для woocommerce.

Я нашел фрагмент, который имеет смысл

$.post(wc_add_to_cart_params.wc_ajax_url.toString().replace('%%endpoint%%', 'add_to_cart'), data, function (response) {

Однако я не могу понять, как открыть wc_add_to_cart_params для моего сценария.Все документы по woocommerce, которые я нашел, ожидают, что вы сделаете махинации, чтобы изменить то, что они уже выпускают, но я не хочу этого делать.Я хочу создать свой собственный шаблон и запустить его вручную.

Итак 1 Как локализовать различные конечные точки woocommerce в моем скрипте?(Я понимаю, как использовать localize_script, но я не знаю, как получить конечные точки ajax в моем файле functions.php.

2 Существует ли законная документация для работы с woocommerce таким образом? Документы на их сайте кажутсяочень плохо, и предназначен только для очень незначительных модификаций или модификаций, которые остаются в рамках парадигмы ловушек (что я совершенно не хочу делать, так как считаю это невероятно привередливым и более подверженным ошибкам, чем просто создание страницы и вызов данных, как вы это делаете с любым другим WPобъекты).

Спасибо за любую помощь

1 Ответ

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

Для тех, кто сталкивается с этим.

Я решил решить эту проблему не с помощью WC Ajax, а написав свой собственный обработчик Ajax и вручную добавив туда корзину.Функция не закончена и все еще нуждается в правильной обработке ответа, но этого достаточно, чтобы вы начали, если у вас такое же зависание, как и у меня.

function cabinets_add_to_cart() {
    ob_start();

    $productID = $_POST['productID'];
    $quantity = $_POST['quantity'];
    $passed_validation = apply_filters('woocommerce_add_to_cart_validation', true, $productID, $quantity);
    $product_status = get_post_status($productID);

    if( $passed_validation && WC()->cart->add_to_cart( $productID, $quantity) && 'publish' === $product_status) {
        do_action( 'woocommerce_aax_added_to_cart', $productID);
        wc_add_to_cart_message($productID);
    }
    else {
        $data = array(
            'error' => true,
            'product_url' => apply_filters( 'woocommerce_cart_redirect_after_error', get_permalink($productID), $productID)
        );

        wp_send_json($data);
    }
    die();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...