我正在使用 WordPress 和 Easy Digital Downloads 插件,但购物车中的商品在闲置 30 分钟后就会过期,我想将此时间延长到 48 小时左右,因为 30 分钟对于购物车中的商品来说太短了将被删除。
我在 EDD 论坛上问过如何增加这个过期时间,但我只得到了指向 add_filter 教程的链接,这些教程并没有真正帮助我使用这个特定的过滤器。
这是我被告知要使用的过滤器来更改过期时间: https://github.com/easydigitaldownloads/Easy-Digital-Downloads/blob/master/includes/class-edd-session.php#L93
所以我试过了:
add_filter( 'wp_session_expiration_variant', array( 'WP_Session', '86400 * 60' ), 99999 );
add_filter( 'wp_session_expiration', array( 'WP_Session', '86400 * 60' ), 99999 );
和
add_filter( 'wp_session_expiration_variant', array( 'EDD_Session', '86400 * 60' ), 99999 );
add_filter( 'wp_session_expiration', array( 'EDD_Session', '86400 * 60' ), 99999 );
两者都不起作用。有什么想法可以增加 session 超时吗?
最佳答案
在网上搜索并浏览您提供的链接。有一个为用户创建 cookie 30 分钟的功能,您需要根据需要重新配置此 cookie。
以下代码可能会帮助您实现此目的。
function change_expiration_cookie() {
$cart = edd_get_cart_contents();
if ( isset( $_COOKIE['edd_items_in_cart'] ) ) {
$items = $_COOKIE['edd_items_in_cart'];
@setcookie( 'edd_items_in_cart', $items, time() + 2880 * 60, COOKIEPATH, COOKIE_DOMAIN, false );
} elseif ( $cart != false ) {
$items = count( $cart );
@setcookie( 'edd_items_in_cart', $items, time() + 2880 * 60, COOKIEPATH, COOKIE_DOMAIN, false );
}
}
add_action( 'init', 'change_expiration_cookie' );
这会将 cookie 设置为在 48 小时后过期。测试相同。让我知道它是否也适合你。
关于php - 试图增加购物车项目的 session 时间(EDD 和 Wordpress),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30315853/