2016-11-14 3 views
3

カートページを迂回して、いくつかの製品のチェックアウトページにリダイレクトします。チェックアウトにリダイレクトするいくつかの製品のカートページをスキップ

私は、製品 <a href="http://example.net/?add-to-cart=1461">Product Name</a>

用カートリンクに追加を作成していると私はHow to skip cart page on woocomerce for certain products only?から

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; 
    } 
} 

以下のコードを持っています。しかし、URLは私をホームページにリダイレクトします。

私はwoocommerceの設定でもカートに追加の動作をチェックしていません。

ありがとうございます。

答えて

1

私はwoocommerceの代わりに別のアプローチとWordPressフックを選択しました。これは、この回答に基づいています。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()'は廃止予定ですが、*実際には非推奨*ではありません。とにかく、[source](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

ソースは、 'wc_get_checkout_url()'が2.5以降利用可能であると言います。あなたの答えが時代遅れだと言ったことを否定するものではありません。私はそれほど心配しません。彼らはあなたが投稿したときには正しかった。 – helgatheviking

関連する問題