2016-11-14 86 views
3

我想要绕过购物车页面并将用户重定向到结帐页面以查看几个产品。跳过购物车页面的几个产品重定向到结帐

我创建了添加到购物车链接产品 <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?。但是,url会将我重定向到主页。只是想知道问题在哪里,

我没有选中在woocommerce设置中添加到购物车的行为。

在此先感谢。

回答

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文件或也以任何插件文件。

代码已经过测试并且功能完整。

+0

源代码评论说'get_checkout_url()'不推荐使用,但它不被*弃用。无论如何,[源代码](https://github.com/woocommerce/woocommerce/blob/master/includes/class-wc-cart.php#L636-L645)建议使用'wc_get_checkout_url()'。 – helgatheviking

+0

@helgatheviking哦谢谢,为所有版本更新...我知道,我的很多答案现在与woocommerce 3.0+不兼容...我会尝试逐步更新它们... – LoicTheAztec

+1

Source说''wc_get_checkout_url()'从2.5开始可用。 :耸耸肩::)这并不否定你对现在过时的答案所说的话。不过我不会担心。当你发布时他们是对的。 – helgatheviking

相关问题