CoCart Community 4.4.0 Release Notes

CoCart Community 4.4.0 has been released!

This post will highlight what’s included in this version of CoCart.

Download directly from WordPress.org.

Other important information:

  • This release focuses on supporting site-management tools
  • No breaking changes in this release — it is a drop-in upgrade.
  • This release does not include a database change.

About:

  • Backwards compatible
  • Tested up to WordPress 6.8
  • Tested up to WooCommerce 9.8

This release focuses on supporting site-management tools like ManageWP, MainWP, and BlogVault — environments where nobody is sitting in wp-admin to click an “update database” button.

Database config update required: Yes — but it now runs automatically. No manual step needed.

Automatic database updates and session transfers

Previously, a pending database update could sit unresolved on a site that nobody was actively managing through wp-admin — exactly the situation tools like ManageWP, MainWP, and BlogVault create by design. As of 4.4.0, CoCart runs its own database updates automatically when needed, and existing sessions now transfer automatically on new installs, closing issue #511.

You don’t need to change anything to get this — it applies on update.

Cart session expiration now matches WooCommerce

Cart session expiration is now aligned with WooCommerce’s own default expiration window, instead of using CoCart’s previous independent default. This matters if you rely on abandoned-cart recovery tooling that expects WooCommerce’s standard session lifetime.

For logged-in customers specifically, session expiration now renews daily and expires after a week of inactivity, keeping carts persistent for returning, authenticated shoppers rather than expiring them on the same short guest-session clock.

If you were relying on the old expiration values, you can restore them with the existing filters — both now also receive whether the request is from a logged-in user:

Before 4.4.0

add_filter( 'cocart_cart_expiring', function( $seconds ) {
    return $seconds;
});

After – filters now also receive is_user_logged_in()

add_filter( 'cocart_cart_expiring', function( $seconds, $is_logged_in ) {
    if ( $is_logged_in ) {
        return $seconds; // keep the new week-long expiration for logged-in users
    }
    return YOUR_OLD_VALUE; // restore previous guest expiration
}, 10, 2 );
add_filter( 'cocart_cart_expiration', function( $timestamp, $is_logged_in ) {
    // same pattern applies here
    return $timestamp;
}, 10, 2 );

Note: filtering guest expiration back to the old value on its own won’t restore the old logged-in behavior — that would require also matching the previous logged-in expiration, which effectively means opting back into pre-4.4.0 behavior entirely.

Third-party support

LiteSpeed Cache now automatically excludes CoCart from being cached, so LiteSpeed users no longer need to add a manual exclusion rule for CoCart’s REST API responses.

Breaking changes & deprecations

No breaking changes in this release — it is a drop-in upgrade.

The following internal filters are deprecated and no longer used. If you were hooking into any of these, they will simply no longer fire:

  • cocart_log_entry_name → no longer used. No replacement — logging internals were refactored.
  • cocart_log_entry_version → no longer used.
  • cocart_log_entry_source → no longer used.
  • cocart_setup_wizard_store_save_next_step_override → no longer used.

If you have any suggestions to improve CoCart, please submit them here.