web-dev-qa-db-ja.com

Woocommerceがカートボタンに追加してチェックアウトにリダイレクトする

プラグインwoocommerceを使用してeコマースを作成しました。サブスクリプションのみを販売しているため、「/ cart /」ページは役に立ちません。顧客が[カートに追加]ボタンをクリックするとチェックアウトページが表示されるように、これを削除しようとしています。

24

functions.phpでフィルターを使用できます。

add_filter ('add_to_cart_redirect', 'redirect_to_checkout');

function redirect_to_checkout() {
    global $woocommerce;
    $checkout_url = $woocommerce->cart->get_checkout_url();
    return $checkout_url;
}

ajaxでは動作しないようですが、単一の製品ページから動作します。

WooCommerceの最新バージョン(> = 2.1)では、関数は次のように簡略化できます。

function redirect_to_checkout() {
    return WC()->cart->get_checkout_url();
}
62
Ewout

WooCommerceの設定には、この機能を有効にできるオプションがあります。

Option to redirect visitor to cart page

WP管理パネル> WooCommerce>カタログにログインし、オプションを選択してください。これが役立つことを願っています!

11
Devin Walker

魔法のように機能するシンプルなソリューションを見つけました。

  1. @Ewoutで述べたように、「追加が成功した後にカートページにリダイレクトする」というボックスをチェックします。
  2. Woocommerce> Settings> Checkout(Tab)-カートとチェックアウトのページを選択する必要がある場所で、チェックアウトページをカートページとして選択します(添付画像)。

それでおしまい。私のために働く。 enter image description here

11
Shir Gans

@RemiCorsonは、この簡潔で有益なチュートリアルを投稿しました。

http://www.remicorson.com/woocommerce-skip-product-cart-pages/

彼は上記の@Ewoutと同じフィルターについて言及していますが、

add_filter ('add_to_cart_redirect', 'redirect_to_checkout');

function redirect_to_checkout() {
    global $woocommerce;
    $checkout_url = $woocommerce->cart->get_checkout_url();
    return $checkout_url;

}

しかし、1行のコードが目立っており、現在のwoocommerceプロジェクトにとって非常に価値があります。

ユーザーが製品ページを自動的にバイパスするために使用できる直接リンクがあります。 http://your-site.com/?add-to-cart=37

「37」は製品IDに置き換えられます。

これは、不必要な手順を排除し、ユーザーをホームページやその他のウーコマース以外のページ/投稿から直接チェックアウトするのに役立ちました。

3
ATutorMe

フィルターadd_to_cart_redirectはWooCommerce 2.6では非推奨です。代わりにwoocommerce_add_to_cart_redirectを使用してください。

これをfunctions.phpに追加します。

add_filter ('woocommerce_add_to_cart_redirect', function() {
  return WC()->cart->get_checkout_url();
} );
1

WooCommerce 3.5.1の更新

手順1.まず、WooCommerce製品の設定に移動して、AJAXカートに追加します。

ステップ2. woocommerce_add_to_cart_redirectフックを使用して、チェックアウトへのリダイレクトを行います。

add_filter( 'woocommerce_add_to_cart_redirect', function( $url ) {
    return wc_get_checkout_url();
});

もちろん、カートに追加ボタンのテキストを変更したり、WooCommerceのカート関連の通知を削除したりするなど、やることがいくつか残っています。詳細については、このチュートリアルを確認することをお勧めします https://rudrastyh.com/woocommerce/redirect-to-checkout-skip-cart.html

1
Misha Rudrastyh

実際には解決策はありませんでした、フィルターadd_to_cart_redirectはカートだけでなくすべてのページでトリガーされていました。提案された答えにいくつか修正を加えました。

add_filter ('add_to_cart_redirect', 'redirect_to_checkout');
  function redirect_to_checkout() {
  if(is_cart()){
    $checkout_url = WC()->cart->get_checkout_url();
  ?>
  <script>
  location = '<?=$checkout_url?>';
  </script>
  <?php 
  }
}
0
nikksan

ショップページで、ajaxを使用して一緒にリダイレクトする場合。 2番目の方法は、何らかの条件がある場合にのみ、このフィルターを使用して、Ajaxを有効にしたWoocommerce設定のままにすることができます。

add_filter('woocommerce_loop_add_to_cart_link', array( $this, 'add_quantity_input' ), 4, 2); 

クラス属性で削除するにはajax_add_to_cartおよびhref値をcheckout urlページに変更します。

私のテンプレートの場合:

public function add_quantity_input($text = null, $product = null) {
    global $product, $woocommerce;

    if ( $text != null and $product != null  ) {
        if(ismycondition($product->id)) {
            $s = explode('class="', $text);
            $s[2]=str_replace('ajax_add_to_cart', '', $s[2]);
            $text = implode('class="', $s);

            $text = preg_replace('/<a(.*)href="([^"]*)"(.*)>/','<a$1href="'.$woocommerce->cart->get_checkout_url().'"$3>', $text);
        }
    }

    return $text;
}

これが役立つことを願っています。

0
jedi