php - 试图增加购物车项目的 session 时间(EDD 和 Wordpress)

标签 php wordpress session session-timeout easy-digital-downloads

我正在使用 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/

相关文章:

php - 如果在 Laravel 5.1 中找不到路由,则显示 404 页面

php - 我不能在 PHP 类定义中使用 IF-THEN-ELSE 和 $_SERVER 变量

java - session 过期后重定向到登录

ASP.NET Core 1.0 中的 session

java - @RequestMapping中的@SessionAtribute调用问题

PHP-MYSQL 根据截止日期显示不同的颜色

php - Symfony 5 PHP8 安全属性

WordPress 自定义帖子类型层次结构和菜单突出显示(current_page_parent)

php - 如何将 mysqli 查询转换为 WordPress 中的 $wpdb?

php - esc_html_e() 中是否可以换行?