Как продлить срок действия корзины без изменения срока действия сессии? - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь продлить срок действия корзины покупок WooCommerce для пользователей с аккаунтами. Предлагаемые решения, которые я нашел (и попробовал), включают продление срока действия сессии.

Интервал окончания срока действия корзины Woocommerce

Тем не менее, это не то, что я после. Я бы хотел, чтобы срок действия сессии не изменился, но в следующий раз, когда пользователь войдет в систему, я бы хотел, чтобы его корзина оставалась на срок до шести месяцев.

Может ли кто-нибудь указать мне правильное направление?

1 Ответ

0 голосов
/ 12 июня 2019

Срок действия сеанса и срок действия корзины связаны: они оба используют одну и ту же внутреннюю переменную (защищенное свойство класса WC_Session_Handler, $_session_expiration).

Вы не можете изменить одно, а не другое.

Удаление корзины из базы данных производится WC_Session_Handler->cleanup_sessions(). Это вызывается функцией wc_cleanup_session_data(), которая запускается действием woocommerce_cleanup_sessions.

Вы можете попытаться удалить действие по умолчанию и указать свое.

remove_action( 'woocommerce_cleanup_sessions', 'wc_cleanup_session_data' );

function my_cleanup_sessions() 
{
    global $wpdb;

    $wpdb->query( $wpdb->prepare( "DELETE FROM $this->_table WHERE session_expiry < %d", time() + 180 * 24 * 60 * 60 ) );

    if ( class_exists( 'WC_Cache_Helper' ) ) {
        WC_Cache_Helper::incr_cache_prefix( WC_SESSION_CACHE_GROUP );
    }
}
add_action( 'woocommerce_cleanup_sessions', 'my_cleanup_sessions' );

Я не проверял это. Это может не работать и могут быть побочные эффекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...