WP - 主页上的自动空车无法正常工作

时间:2014-02-25 18:20:36

标签: php wordpress if-statement woocommerce

我正在建立一个带结账的网站,该网站有2个产品,需要单独出售。因此,为了防止人们添加第一个项目,离开购物车,然后添加第二个项目,我想设置购物车自动清空。所以我决定在主页上测试一下。我的初始功能是:

function my_empty_cart(){
    global $woocommerce;
    $woocommerce->cart->empty_cart();
}
add_action('init', 'my_empty_cart');

完美无缺。但由于这个原因,购物车总是空着的。所以我决定添加一个“if”语句:

function my_empty_cart() {
  global $woocommerce;

    if ( is_front_page() && isset( $_GET['empty-cart'] ) ) { 
        $woocommerce->cart->empty_cart(); 
    }
}
add_action( 'init', 'my_empty_cart' );

这根本不起作用......我用“is_home”和“is_page”(带有各种页面标题和ID)尝试过它。我甚至尝试删除“&& isset”部分,只是为了测试。在这一点上,我迷失了,我从来没有遇到过这么简单的PHP代码的困难,而且我现在正在拔出我的头发。有什么简单的东西,我只是没有看到?

2 个答案:

答案 0 :(得分:1)

这对我有用(不依赖于WordPress条件):

/*empty cart if user come to homepage*/
add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;

if ($_SERVER['REQUEST_URI'] === '/') { 
    $woocommerce->cart->empty_cart(); 
}

}

答案 1 :(得分:0)

条件标签(is_home(),is_front_page()等)在“init”挂钩触发时不起作用。你可以用'wp'钩子代替。它在设置wp类对象后立即运行(http://codex.wordpress.org/Plugin_API/Action_Reference/wp)。

function my_empty_cart() {
  global $woocommerce;

    if ( is_front_page() && isset( $_GET['empty-cart'] ) ) { 
     $woocommerce->cart->empty_cart(); 
    }
}
add_action( 'wp', 'my_empty_cart' );