Срок действия сеанса и срок действия корзины связаны: они оба используют одну и ту же внутреннюю переменную (защищенное свойство класса 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' );
Я не проверял это. Это может не работать и могут быть побочные эффекты.