【问题标题】:How to clear an abandoned woocommerce cart如何清理废弃的 woocommerce 购物车
【发布时间】:2014-10-24 09:17:27
【问题描述】:

我遇到了这段代码,用于在某些页面加载时清除 Woocommerce 购物车。

但是,我想知道有没有办法在购物车被遗弃后清除它?

对于仅在首页上触发,您的函数需要如下所示:

add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;

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

} 函数 is_front_page() 仅在您的 wordpress 网站的首页上返回 true。此外,您可能会使用函数 is_page() 检测任何其他页面,您可以在其中传递任何页面标题、ID 或 slug

【问题讨论】:

  • 如何定义“被遗弃”,我们应该如何测试?
  • 我想如果有一些计时器可以让购物车内容在一定分钟后没有结帐?

标签: php wordpress woocommerce cart


【解决方案1】:

来自这个问题:Set WooCommerce Cart Expiration

据我所知,WooCommerce 2.0.20 有一个每天运行两次的计划维护作业,它将从 WordPress 选项表中删除任何购物车会话。默认到期时间设置为用户首次创建购物车后的 48 小时。我猜您的标准 WordPress 调度例程(和服务器 cron/at 作业)需要正常运行才能执行。

AFAIK 无法通过设置调整 48 小时规则。您可以在主题或“相邻”插件中编写过滤器。

我稍微调整了代码以切换到 24 小时会话。我不确定您是否要每隔几分钟删除一次,因为这可能会影响性能。

add_filter('wc_session_expiring', 'so_26545001_filter_session_expiring' );

function so_26545001_filter_session_expiring($seconds) {
    return 60 * 60 * 23; // 23 hours
}

add_filter('wc_session_expiration', 'so_26545001_filter_session_expired' );

function so_26545001_filter_session_expired($seconds) {
    return 60 * 60 * 24; // 24 hours
}

【讨论】:

  • 5 岁的代码。但是,这些过滤器似乎仍然在 WC 核心中,并且仍然负责确定保留用户会话的时间长度。
  • 非常感谢你的工作就像一个魅力。
猜你喜欢
  • 1970-01-01
  • 2014-01-24
  • 1970-01-01
  • 2015-05-18
  • 2019-03-21
  • 2011-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多