Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何清理废弃的购物车_Php_Wordpress_Woocommerce_Cart - Fatal编程技术网

Php 如何清理废弃的购物车

Php 如何清理废弃的购物车,php,wordpress,woocommerce,cart,Php,Wordpress,Woocommerce,Cart,我遇到了在某些页面加载上清除Woocommerce购物车的代码 但是,我想知道有没有办法在车子被遗弃后清理掉它 对于仅在首页上触发,您的函数需要如下所示: } 函数is_front_page()仅在wordpress站点的首页上返回true。此外,您还可以使用函数is_page()检测任何其他页面,您可以在其中传递任何页面标题、ID或slug 从这个问题: 据我所见,WooCommerce 2.0.20有一个计划维护作业,每天运行两次,将从WordPress选项表中删除任何购物车会话。默认过期时

我遇到了在某些页面加载上清除Woocommerce购物车的代码

但是,我想知道有没有办法在车子被遗弃后清理掉它

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

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

从这个问题:

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

抱歉,无法通过设置调整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核心中,并且仍然负责确定保留用户会话的时间长度。
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
}