2015-10-06 90 views
2

我將此添加到我的functions.php文件:如何跳過特定產品的woocomerce的購物車頁面?

add_filter ('woocommerce_add_to_cart_redirect', 'woo_redirect_to_checkout'); 
function woo_redirect_to_checkout() { 
$checkout_url = WC()->cart->get_checkout_url(); 
return $checkout_url; 
} 

但現在,所有的產品都重新定向海峽退房。我想只在一個產品中有這個選項。這是我可以將產品ID添加到同一個文件管理器的一種方式嗎?

謝謝!

回答

1

您只需將產品添加到購物車中即可獲得該產品,然後檢查是否要將該產品重定向到購物車頁面。您需要更改$desire_product = 'certain_product';下面的代碼行,它肯定會工作。

add_filter('woocommerce_add_to_cart_redirect', 'woo_redirect_checkout'); 

function woo_redirect_checkout() { 
    global $woocommerce; 
    $desire_product = 'certain_product'; 
    //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; 
    } 
} 
+0

謝謝@PrafullaKumarSahu – Marcio

+0

幫助人們總是愉快:) –

1

有一些行動掛鉤,以及可以使用,對於如:woocommerce_add_to_cart其通過產品ID的回調函數:

add_action('woocommerce_add_to_cart', 'custom_add_to_cart', 10, 2); 

function custom_add_to_cart($cart_item_key, $product_id) { 
    // replace 123 with a valid product id 
    if(123 == $product_id) { 
     wp_redirect(WC()->cart->get_checkout_url()); 
     exit; 
    } 
} 
1

我寫了這個小插件,共享在這裏。該插件爲產品元框添加了一個小型複選框,因此您可以指定哪些產品應觸發自動跳過結帳。基本上使用與其他答案中相同的woocommerce_add_to_cart_redirect過濾器,但提供admin後端選項以確定哪些產品會觸發重定向。

<?php 
/** 
* Plugin Name: Redirect to checkout 
* Plugin URI: http://stackoverflow.com/q/32962653/383847 
* Description: redirect to checkout for certain products 
* Version: 1.0 
* Author: Kathy Darling 
* Author URI: http://kathyisawesome.com 
* Requires at least: 3.8 
* Tested up to: 3.9 
* 
* Text Domain: kia-redirect-to-checkout 
* Domain Path: /languages/ 
* 
*/ 
if (! defined('ABSPATH')) { 
    exit; // Exit if accessed directly 
} 

/* 
* Add text inputs to product metabox 
*/ 
function kia_add_to_wc_metabox(){ 
    global $post; 

    echo '<div class="options_group">'; 

    // Suggested Price 
    echo woocommerce_wp_checkbox(array(
     'id' => '_redirect_to_checkout', 
     'label' => __('Redirect to checkout', 'kia-redirect-to-checkout') , 
     'description' => __('When this item is added to the cart, re-direct the customer to checkout immediately.', 'kia-redirect-to-checkout') 
     ) 
    ); 

    echo '</div>'; 

} 
add_action('woocommerce_product_options_general_product_data', 'kia_add_to_wc_metabox'); 


/* 
* Save extra meta info 
*/ 
function kia_process_wc_meta_box($post_id, $post) { 

    if (isset($_POST['_redirect_to_checkout'])) { 
     update_post_meta($post_id, '_redirect_to_checkout', 'yes'); 
    } else { 
     update_post_meta($post_id, '_redirect_to_checkout', 'no'); 
    } 

} 
add_action('woocommerce_process_product_meta', 'kia_process_wc_meta_box', 1, 2); 


/* 
* Redirect to checkout 
*/ 
function kia_add_to_cart_redirect($url){ 

    // If product is one of our special types 
    if (is_numeric($_REQUEST['add-to-cart']) && kia_maybe_redirect_cart((int) $_REQUEST['add-to-cart'])) { 

     // Remove default cart message 
     WC()->clear_messages(); 

     // Redirect to checkout 
     $url = WC()->cart->get_checkout_url(); 
    } 

    return $url; 
} 
add_filter('woocommerce_add_to_cart_redirect', 'kia_add_to_cart_redirect'); 


/* 
* check if an item has custom field 
*/ 
function kia_maybe_redirect_cart($product_id){ 

    if ('yes' == get_post_meta($product_id, '_redirect_to_checkout', true)){ 
     return TRUE; 
    } else { 
     return false; 
    } 
} 
+0

+1這應該是接受的解決方案。使用我提供的代碼會更加靈活,如果您需要添加更多需要在添加到購物車時重定向到結帳的產品,則需要更改這些代碼。使用插件,只需編輯產品並勾選複選框即可。 –

相關問題