我想绕过购物车页面并将用户重定向到一些产品的结帐页面。
我已为该产品创建了“添加到购物车”链接
<a href="http://example.net/?add-to-cart=1461">Product Name</a>
我有以下代码
add_filter( 'woocommerce_add_to_cart_redirect', 'woo_redirect_checkout' );
function woo_redirect_checkout() {
global $woocommerce;
$desire_product = 1461;
//Get product ID
$product_id = (int) apply_filters( 'woocommerce_add_to_cart_product_id', $_POST['add-to-cart'] );
//Check if current product is subscription
if ( $product_id == $desire_product ){
$checkout_url = $woocommerce->cart->get_checkout_url();
return $checkout_url;
exit;
} else {
$cart_url = $woocommerce->cart->get_cart_url();
return $cart_url;
exit;
}
}
来自How to skip cart page on woocomerce for certain products only?的。但该网址改为将我重定向到主页。只是想知道问题在哪里,
我也在woocommerce设置中取消选中了添加到购物车的行为。
提前致谢。
答案 0 :(得分:1)
我选择了另一种方法和WordPress钩子而不是woocommerce。这是基于这个答案:WooCommerce - Skip cart page redirecting to checkout page
这就是代码:
function skip_cart_page_redirection_to_checkout() {
// desired product id redirection
$product_id = 1461;
$items_ids = array();
// Get all items IDs that are in cart
foreach( WC()->cart->get_cart() as $item ) {
$items_ids[] = $item['product_id'];
}
// If is cart page and the desired peoduct is in cart => redirect to checkout.
if( is_cart() && in_array($product_id, $items_ids) )
// WooCommerce 3.0 compatibility added
if ( version_compare( WC_VERSION, '2.7', '<' ) ) {
wp_redirect( WC()->cart->get_checkout_url() ); // Older than 3.0
} else {
wp_redirect( wc_get_checkout_url() ); // 3.0+ (Thanks to helgatheviking)
}
}
add_action('template_redirect', 'skip_cart_page_redirection_to_checkout');
此代码包含活动子主题(或主题)的function.php文件或任何插件文件。
代码已经过测试并且功能齐全。