创建一个新片段:
进入 WordPress 后台,点击 Code Snippets > Add New。
将下面的 PHP 代码粘贴到片段内容中。
add_action('wp_ajax_add_quick_buy_to_cart', 'add_quick_buy_to_cart');
add_action('wp_ajax_nopriv_add_quick_buy_to_cart', 'add_quick_buy_to_cart');
function add_quick_buy_to_cart() {
$product_id = intval($_POST['product_id']);
$product_num = $_POST['product_num'] ? intval($_POST['product_num']) : 1;
if ($product_id) {
// 将商品添加到购物车
WC()->cart->add_to_cart($product_id, $product_num);
}
// 返回购物车页面的 URL,或者结账页面的 URL
wp_send_json_success(array(
'redirect_url' => wc_get_checkout_url() // 添加到购物车后,跳转到结账页面
));
}
JavaScript:
如果你的 Code Snippets 插件支持 JavaScript,你可以直接添加 JavaScript 代码。
否则,你可以通过一个额外的 HTML 片段(<script> 标签)来添加 JavaScript
jQuery(function($) {
// 处理 "Buy Now" 按钮点击事件
$('body').on('click', '.quick-buy-button', function(e) {
e.preventDefault(); // 防止默认跳转
var productId = $(this).data('product_id'); // 获取产品 ID
// 使用 AJAX 请求将产品添加到购物车
$.ajax({
url: wc_add_to_cart_params.ajax_url, // WooCommerce AJAX 处理 URL
type: 'POST',
data: {
action: 'add_quick_buy_to_cart',
product_id: productId,
product_num: jQuery("input[name='quantity']").val()
},
success: function(response) {
// 在商品成功添加到购物车后,跳转到结账页面
if (response.success) {
window.location.href = response.data.redirect_url; // 重定向到结账页面
}
}
});
});
});
修改后的 HTML 输出:
add_action('woocommerce_after_add_to_cart_button', 'add_quick_buy_button', 15);
add_action('woocommerce_after_shop_loop_item', 'add_quick_buy_button', 15);
function add_quick_buy_button() {
global $product;
if ($product->is_featured()) { // 检查是否为精选产品
$product_id = $product->get_id();
$checkout_url = wc_get_checkout_url();
// 包裹两个按钮的容器
echo '<div class="buttons-wrapper">';
// 输出 "Add to Cart" 按钮
echo '<a href="?add-to-cart=' . $product_id . '" class="button product_type_simple add_to_cart_button ajax_add_to_cart" data-product_id="' . $product_id . '" data-product_name="' . $product->get_name() . '" data-price="' . $product->get_price() . '">Add to cart</a>';
// 输出 "Buy Now" 按钮,添加 data-product_id
echo '<a href="#" class="button quick-buy-button" data-product_id="' . $product_id . '">Buy Now</a>';
// 关闭容器
echo '</div>';
}
}
0 个评论