如果购物车为空,购物车页面将重定向到 WooCommerce 中的商店页面?

Posted

技术标签:

【中文标题】如果购物车为空,购物车页面将重定向到 WooCommerce 中的商店页面?【英文标题】:If cart is empty, the cart page will redirect to shop page in WooCommerce? 【发布时间】:2014-08-09 14:31:13 【问题描述】:

在 WooCommerce 中,我想在购物车页面为空时将购物车页面重定向到商店页面,否则会显示购物车页面。谁能有解决办法?

这是我尝试过的代码,但它不起作用:

function my_empty_cart() 
  global $woocommerce;

    if (isset( $_GET['empty-cart'] ) )  
        wp_safe_redirect( get_permalink( woocommerce_get_page_id( 'product' ) ) );
    

add_action( 'init', 'my_empty_cart' );

【问题讨论】:

【参考方案1】:

// old woocommerce : use sizeof( $woocommerce->cart->cart_contents) to check cart content count

// In new woocommerce 2.1+ : WC()->cart->cart_contents_count to check cart content count

add_action("template_redirect", 'redirection_function');
function redirection_function()
    global $woocommerce;
    if( is_cart() && WC()->cart->cart_contents_count == 0)
        wp_safe_redirect( get_permalink( woocommerce_get_page_id( 'shop' ) ) );
    

init 钩子每次都会运行。使用template_redirect

==============Updates=============

在新的 woocommerce 中,他们更新了功能,现在您可以使用以下功能直接获取购物车内容数。

WC()->cart->cart_contents_count

【讨论】:

init 无处不在...我会尝试使用template_redirect 是的..您可以在购物车页面上检查并重定向用户。 我也把这个函数放在了cart.php中。不工作 已经从你的最后@Pushpak patel 测试这些代码了吗? 他们改变了变量。而不是sizeof( $woocommerce->cart->cart_contents ),您需要检查$woocommerce->cart->cart_contents_count,返回一个整数(如果为空则为0)【参考方案2】:

我自己测试了一下,因为我需要类似的东西。

function cart_empty_redirect_to_shop() 
    global $woocommerce;

    if ( is_page('cart') and !sizeof($woocommerce->cart->cart_contents) ) 
        wp_redirect( get_permalink( wc_get_page_id( 'shop' ) ) ); exit;
    


add_action( 'wp_head', 'cart_empty_redirect_to_shop' );

【讨论】:

@MaggewDotCom 很高兴它有帮助!【参考方案3】:

只需转到 woocommerce 文件夹并导航到 CART 文件夹.. 里面有一个 cart-empty.php

然后找到以下内容:

<p><a class="button1 btn btn-normal" href="<?php echo get_permalink.....

它会说 getpermalink(woocommerce_.....

只需将其更改为

<p><a class="button1 btn btn-normal" href="<?php echo get_permalink('THE PAGE ID YOU WANT TO REDIRECT TO');

然后你的叔叔鲍勃..它会重定向到你指定的 id 页面。

如果你不明白,请告诉我。

【讨论】:

我建议在您的 function.php 文件中添加一些代码。当你更新插件时,你必须重做这个......翻转那个。【参考方案4】:

我尝试了@Pushpak 的解决方案,但它不再起作用了。要检查购物车内容,请使用此代码:

global $woocommerce;
if ( $woocommerce->cart->cart_contents_count != 0 ) 
    // cart has content
 else 
    // cart is empty

【讨论】:

【参考方案5】:

2018 年 - 25 日 - 9 月

今天为我工作::

function cart_empty_redirect_to_shop() 
  global $woocommerce, $woocommerce_errors;

if ( is_cart() && sizeof($woocommerce->cart->cart_contents) == 0)  
        wp_safe_redirect( get_permalink( wc_get_page_id( 'shop' ) ) ); 
     exit;
    

add_action( 'template_redirect', 'cart_empty_redirect_to_shop' );

【讨论】:

这似乎是一个非常古老的问题。无论如何,您尝试回答这可能对其他人有所帮助,这很好。但尝试回答新问题。【参考方案6】:

2021 年更新

由于 WooCommerce 版本 3 在尝试访问购物车页面并且购物车已经为空时,使用以下内容重定向到商店页面:

add_action( 'template_redirect', 'empty_cart_redirect' );
function empty_cart_redirect()
    if( is_cart() && WC()->cart->is_empty() ) 
        wp_safe_redirect( get_permalink( wc_get_page_id( 'shop' ) ) );
        exit();
    

代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并且可以工作。


注意事项 - 过时和弃用的代码:

global $woocommerce;$woocommerce-&gt;cart 一起使用被简单地替换为 WC()-&gt;cart sizeof($woocommerce-&gt;cart-&gt;cart_contents) == 0 替换为简单的WC()-&gt;cart-&gt;is_empty() woocommerce_get_page_id() 替换为 wc_get_page_id()

当移除购物车页面上的所有购物车商品时,要激活重定向,需要一些额外的 jQuery 代码,请参阅:Redirect to shop if cart is emptied on cart page in WooCommerce 3+

【讨论】:

以上是关于如果购物车为空,购物车页面将重定向到 WooCommerce 中的商店页面?的主要内容,如果未能解决你的问题,请参考以下文章

如何自定义Javascript Dialogue选项?

Woocommerce 在结帐页面下订单后替换购物车中的产品

在 laravel 5.3 中重定向回请求的页面

如何将特定类别的产品页面重定向到 Woocommerce 中的购物车页面

Woocommerce - 未登录用户的购物车为空

将“添加到购物车”按钮重定向到 Magento 中的不同自定义页面/在 Magento 的产品页面中添加新按钮