【问题标题】:Wordpress/Woocommerce SessionsWordPress/Woocommerce 会话
【发布时间】:2014-08-07 14:00:34
【问题描述】:

下午好,我已经使用 Wordpress/Woocommerce 为我的客户建立了一个网站。该网站运行良好,但一个问题是订单完成后购物篮/会话不清除。在我看来,WooCommerce 甚至没有标准功能。使用 Woocommece 标准文件,在结帐过程完成后终止会话的最佳方法是什么?

有没有办法解决这个问题?

【问题讨论】:

  • WooCommerce 在订单付款后肯定会清空购物车(购物篮) - 请查看this line of code 进行确认。如果订单状态为“失败”,则它不会清空购物车 - 因此,如果您使用 PayPal 或其他方式但未完成 paypal 结帐,那么它将以这种方式标记并且不会清空购物车。

标签: php wordpress cookies woocommerce


【解决方案1】:

我发现了一个类似的问题,但单击按钮即可清除购物车.. http://wordpress.org/support/topic/add-an-empty-cart-button-to-cart-page 似乎对某些用户有用.. 这是代码,它应该进入function.php文件

add_action('init', 'woocommerce_clear_cart_url');
function woocommerce_clear_cart_url() {
    global $woocommerce;
    if( isset($_REQUEST['clear-cart']) ) {
        $woocommerce->cart->empty_cart();
    }
}

这是按钮的代码

<input type="submit" class="button" name="clear-cart" value="<?php _e('Empty Cart', 'woocommerce'); ?>" />

我猜你不需要按钮,所以在下一页当你希望购物车为空时,你可以显式调用这个函数 _e('Empty Cart', 'woocommerce');

例如,如果您想在标题为“付款成功”的帖子页面中清除购物车

if(is_single('Payment Success'))
_e('Empty Cart', 'woocommerce');

或者如果它的 slug 是付款成功

is_single('payment-success');
_e('Empty Cart', 'woocommerce');

类似地检查它的主页是否可以使用

is_front_page(); 

或者如果它在wordpress页面上你可以使用这个

if(is_page( 'Payment Success' ))
    _e('Empty Cart', 'woocommerce');

if(is_page( 'payment-success' ))
    _e('Empty Cart', 'woocommerce');

您可以在您的 wordpress 网站的 head 部分包含上述代码!

希望对你有帮助

【讨论】:

    【解决方案2】:

    购物车应该是空的,因为这个功能是标准的,empty_cart();

    您是否使用任何缓存插件?在这种情况下,您需要排除购物车页面 http://docs.woothemes.com/document/configuring-caching-plugins/

    也可能是支付网关的问题,请确保您已更新到最新版本。

    【讨论】:

      【解决方案3】:

      您的购物车应该在结帐后清空,以免出现其他问题。

      您可以创建一个包含empty_cart() 的函数,该函数在支付完成时触发“以防万一”。 见:http://docs.woothemes.com/wc-apidocs/class-WC_Cart.html

      add_filter( 'woocommerce_payment_complete_order_status', 'pg_woocommerce_payment_complete_order_status', 10, 2 );
      function pg_woocommerce_payment_complete_order_status ( $order_status, $order_id ) {
      
          $global $woocommerce;
          $woocommerce->cart->empty_cart();
      
      }
      

      【讨论】:

        【解决方案4】:

        你可以使用这个钩子:

        function custom_empty_cart( $order_id, $data ) {
           // delete current cart item here
        }
        
        add_action( 'woocommerce_checkout_order_processed', 'custom_empty_cart', 11, 2 );
        

        或者你可以从here查看woocommerce钩子列表。

        【讨论】:

          猜你喜欢
          • 2016-08-09
          • 2013-12-15
          • 2016-07-03
          • 2022-09-27
          • 2018-10-03
          • 2021-02-15
          • 2020-11-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多