![](/img/trans.png)
[英]Add a button in checkout to empty cart and redirect to shop page in Woocommerce
[英]Woocommerce add to cart button redirect to checkout
我使用插件woocommerce創建了一個電子商務。 我只銷售訂閱,所以“/ 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;
}
但一行代碼突出,對我目前的woocommerce項目來說具有超值價值:
用戶可以使用直接鏈接自動繞過產品頁面。 http://your-site.com/?add-to-cart=37
'37'將替換為您的產品ID。
這對我來說非常有用,可以消除不必要的步驟並讓用戶直接從主頁和其他非woocommerce頁面/帖子結賬。
在WooCommerce 2.6中不推薦使用過濾器add_to_cart_redirect 。 請改用woocommerce_add_to_cart_redirect 。
將其添加到您的functions.php:
add_filter ('woocommerce_add_to_cart_redirect', function() {
return WC()->cart->get_checkout_url();
} );
步驟1.首先轉到WooCommerce Products設置並停用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
在商店頁面上,如果你想使用ajax並重定向到其他。 第二種方法只有在有某些條件時,你可以使用這個過濾器並在Woocommerce設置中啟用ajax:
add_filter('woocommerce_loop_add_to_cart_link', array( $this, 'add_quantity_input' ), 4, 2);
刪除類屬性ajax_add_to_cart
並將href值更改為checkout url page;
在我的模板案例中:
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;
}
我希望這有幫助。
沒有一個解決方案實際上對我有用,過濾器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
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.