プラグインwoocommerceを使用してeコマースを作成しました。サブスクリプションのみを販売しているため、「/ cart /」ページは役に立ちません。顧客が[カートに追加]ボタンをクリックするとチェックアウトページが表示されるように、これを削除しようとしています。
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();
}
WooCommerceの設定には、この機能を有効にできるオプションがあります。
WP管理パネル> WooCommerce>カタログにログインし、オプションを選択してください。これが役立つことを願っています!
魔法のように機能するシンプルなソリューションを見つけました。
それでおしまい。私のために働く。
@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に置き換えられます。
これは、不必要な手順を排除し、ユーザーをホームページやその他のウーコマース以外のページ/投稿から直接チェックアウトするのに役立ちました。
フィルター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製品の設定に移動して、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
実際には解決策はありませんでした、フィルター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
}
}
ショップページで、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;
}
これが役立つことを願っています。