我正在尝试构建自定义的Woocommerce产品列表页面-我已经对其进行了设置。
但是,当我尝试将AJAX添加到购物车时,我无法弄清楚如何使用woocommerce的ajax端点来本地化脚本。
我发现了一个有意义的代码段
$.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,但我不知道如何在我的functions.php文件中获取ajax端点。
2是否有使用woocommerce的合法文档?他们网站上的文档看上去确实很糟糕,并且仅用于非常小的修改或属于钩子范式的修改。 (我绝对不喜欢这样做,因为我发现它比创建页面和像调用其他任何WP对象那样调用数据要复杂得多,而且更容易出错)。
谢谢您的帮助
答案 0 :(得分:0)
对于遇到此问题的任何人。
我最终不是通过使用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();
}