woocommerce セッションの有効期限が切れたら、カートの内容を消去したいと考えています。クラスWC_Session_Handlerに時間を設定する変数があることがわかりますが、有効期限が切れると、製品はカートから削除されません (設計によりこのように動作すると思いますが、エラーではありません)。
woocommerce カートのセッション有効期限を設定して、有効期限が切れたときにカートのコンテンツが削除されるようにするにはどうすればよいか教えてください。
woocommerce セッションの有効期限が切れたら、カートの内容を消去したいと考えています。クラスWC_Session_Handlerに時間を設定する変数があることがわかりますが、有効期限が切れると、製品はカートから削除されません (設計によりこのように動作すると思いますが、エラーではありません)。
woocommerce カートのセッション有効期限を設定して、有効期限が切れたときにカートのコンテンツが削除されるようにするにはどうすればよいか教えてください。
私が見る限り、WooCommerce 2.0.20 には、WordPress オプション テーブルからカート セッションを削除する 1 日 2 回実行されるスケジュールされたメンテナンス ジョブがあります。デフォルトの有効期限は、ユーザーが最初にカートを作成してから 48 時間に設定されています。これを実行するには、標準の WordPress スケジューリング ルーチン (およびサーバーの cron/at ジョブ) が適切に実行されている必要があると思います。
私の知る限り、設定で 48 時間ルールを調整する方法はありません。テーマまたは「隣接する」プラグインにフィルターを作成できます。
以下は、私が自分のサイトで作成した新しい「WooCommerce Extend Cart Timeout」プラグインのコードの一部です。
私の WoocommerceLicenseAPI クラス内:
if ( ! class_exists( 'WoocommerceLicenseAPI' ) ) {
add_filter('wc_session_expiring' , array('WoocommerceLicenseAPI', 'filter_ExtendSessionExpiring') );
add_filter('wc_session_expiration' , array('WoocommerceLicenseAPI', 'filter_ExtendSessionExpired') );
{
static function filter_ExtendSessionExpiring($seconds) {
return (60 * 60 * 24 * 8) - (60 * 60);
}
static function filter_ExtendSessionExpired($seconds) {
return 60 * 60 * 24 * 8;
}
HTH