ajax - Woocommerce - 将 ajax 数据公开给自定义 javascript
问题描述
我正在尝试构建一个自定义的 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 对象那样构建页面和调用数据更容易出错)。
感谢您的任何帮助
解决方案
对于遇到这种情况的任何人。
我最终不是通过使用 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();
}
推荐阅读
- c++ - 在树中插入新节点
- linux - 如何确定 conda 是否已经在 bash 脚本中的机器上可用?
- css - CSS Responsive 对我的网站来说很奇怪,宽度自动
- docker - 具有 'exec' 权限的 Docker --mount type=tmpfs
- javascript - 更改猫头鹰转马时间
- python - 如何让 Python Infinite while / else 语句中断?
- ruby-on-rails - 无法在 Bigsur 上安装 mysql2 Gem
- selenium-chromedriver - 如何为具有相同名称的多个输入设置值?
- c# - 使用图像而不是文本的 Visual Studio 注释
- javascript - 在多个值的对象数组中搜索