Skip to main content
買い物客が Add to cart をクリックすると、通常はテーマではなく Aftersell 自身が追加を処理します。このページでは、その理由、あなたが追加したスクリプトにとって何を意味するのか、そして 1 つのフォームだけ、あるいはすべてのフォームでそれをオフにする方法を説明します。 ほとんどのストアではこれを変更する必要はありません。あなたのスクリプトがカート追加で発火しなくなった場合や、カート追加ボタンの挙動がおかしい場合に、以下を読み進めてください。

インターセプトが何をするか

Aftersell はテーマより先にカート追加の submit を待ち受けます。これを認識すると、次のことを行います:
  1. イベントを止めて、ページ上のほかの何にもそのクリックが処理されないようにします。
  2. 追加を自分で Shopify に送信します。
  3. Aftersell Cart のドロワーを開きます。
重要なのはステップ 1 であり、それがこのページが存在する理由です。

なぜ存在するのか

これがないと、同じクリックに両方のカートが反応してしまいます。テーマがアイテムを追加して自分のドロワーを開き、Aftersell もそれを追加してあなたのドロワーを開き、買い物客にはカートが 2 つ、しばしばアイテムが 2 回追加された状態で表示されます。 イベントを止めることが、追加とカートを 1 つに保証するもっとも単純な方法です。

その代償

イベントを止めるのは、テーマだけでなくすべてに対してです。同じカート追加を待ち受けているほかのコードは実行されなくなります。あなたのアナリティクス、トラッキングピクセル、サブスクリプションアプリやバンドルアプリ、自分で追加したスクリプトなどです。 失敗は静かに起きます。ブラウザのコンソールには何も出ませんし、追加自体は動作するので、目に見えて壊れているというよりも、数値がおかしいという症状が普通です:
  • GA4、Meta、TikTok から add_to_cart イベントが欠落する
  • 商品ページでは動くのに、カート経由では動かないサブスクリプションアプリやバンドルアプリ
  • フォームに対する自分の addEventListener が一度も発火しない
これに心当たりがあるなら、原因はこのページで、対処法は下にあります。

Aftersell がインターセプトしないとき

インターセプトは常にオンとは限りません。次の場合、Aftersell はカート追加をそのままにします:
  • テーマのカートを認識できる場合。 Aftersell が扱い方を知っているテーマでは、イベントをブロックする代わりにテーマ自身のカートを動かないようにし、テーマに通常どおり追加を実行させます。あなたのスクリプトは以前と同じように動きます。下記のどのテーマかを参照してください。
  • フォームがラインアイテムを追加しない場合。 バリアント iditems[] も持たないフォームはそのままにされます。
  • あなたが以下の方法のいずれかでオプトアウトしている場合。
Aftersell が追加を実行しないときも、カートリクエストは監視し続け、それを見つけるとドロワーを開きます。選ぶ前に: 何が変わるかを参照してください。

Aftersell が認識するテーマ

Aftersell は名前ではなくテーマの作りかたで判別するため、これらから派生したカスタムテーマも通常は認識されます。Aftersell が一度も見たことのないプライベートビルドも含みます。
逆のこともあります。大幅にカスタマイズされたビルドは、名前としてはまだ “Dawn” でも、親テーマから十分に離れて Aftersell に認識されなくなる場合があります。このリストに載っていることは認識される可能性を高めますが、確実ではありません。

選択肢

問題を解決するもっとも狭い選択肢を選んでください。各行は上の行よりもっと多くを手放すことになります。

選ぶ前に: 何が変わるか

オプトアウトすると追加をテーマに戻すことになるため、行を選ぶ前に答えておきたい 2 つの質問があります。カートは引き続き開くのか、そしてテーマのカートが横に現れるのかです。

自分のカートは引き続き開くか?

たいていの場合は、こちらで何もしなくても開きます。追加を実行するのが誰であれ、Aftersell は Shopify に向かうリクエストを監視し、通常の Open cart when an item is added の設定に従って、それを見つけるとドロワーを開きます。自分で何かを呼び出す必要はありません。 これが崩れる状況は 3 つあり、いずれも対処法があります: 追加が Shopify のカートエンドポイント以外に送られる場合。 Aftersell は自分のドメイン上の /cart/add/cart/change/cart/update/cart/clear を監視します。独自のエンドポイント経由で追加し、あとでカートを同期するアプリはこの監視からは見えません。そのアプリの追加が完了したあとで、自分でカートを開いてください:
クリックからリクエストまでにおよそ 3 秒以上経過する場合。 Aftersell は実際のクリックやキー入力に密接に続く追加を、買い物客が起こしたものとして扱います。そのウィンドウを過ぎるとバックグラウンド追加とみなされ、オプトインしない限りドロワーは開きません:
カート設定でそうしないよう指定されている場合。 Open cart when an item is added がオフか、open_on_add_to_cart: 'never' を設定している場合、何もドロワーを開きません。それは設定どおりの動作です。

テーマのカートも開いてしまう?

これはオプトアウトが伴うリスクで、答えはテーマ次第です。 テーマのカートを動かなくすることはインターセプトとは別で、いずれにせよページ読み込み時に発生します。ですので、ここでのオプトアウトのどれもそれをオンに戻しません。認識済みリストのテーマなら、テーマ自身のカートは静かなままで、買い物客に見えるのはあなたのカート 1 つだけです。 Aftersell が認識しないテーマでは、テーマのカートを抑えるものは何もありません。オプトアウトするとテーマは以前とまったく同じように追加を扱います。これには自分のドロワーを開くことや /cart へのリダイレクトが含まれます。同時に Aftersell は監視で見つけたリクエストからドロワーを開きます。これがカート 2 つの状態であり、そもそもインターセプトが存在する理由です。 そうなった場合、選択肢は 3 つです。そのフォームではインターセプトを有効なままにする、その原因のフォームをカバーしないより狭いオプトアウトを使う、あるいはテーマのコードでテーマ自身のカートを自分で止める、です。
オプトアウトはまずテストストアや未公開テーマで有効にしてみてください。以前は現れなかったテーマ自身のカートが現れる場合、そのテーマは Aftersell が認識するテーマではないので、そのフォームではインターセプトを有効なままにしておいた方がよいでしょう。
これはカート追加のみに当てはまります。カートアイコンaftersell-cart-wont-open-cart クラスで Aftersell からバイパスさせるのは別の話です。カートアイコンのクリックはリクエストを送らないため、Aftersell に監視するものがなく、ドロワーは開きません。下記を参照してください。

フォーム単位: コードでのルール

推奨される選択肢です。そのままにしたいフォームに対して true を返すルールを登録します:
Cart settings → Custom script → Initialization に入れてください。ルールは追加式です。あなたのルールは他のルールと並行して実行され、true を返すルールがあればそのフォームはスキップされます。詳細はフックを参照してください。

フォーム単位: テーマでのクラス

ルールを書きたくない場合は、テーマで aftersell-cart-skip-atc クラスを追加してください:
フォーム送信の場合、クラスはフォーム要素そのものに付ける必要があります。親の div では機能しません。フォーム送信を伴わずにカートに追加するボタンの場合、クラスはボタン自体や周りのどの要素に付けても構いません。

ストア全体: インターセプトをオフにする

大雑把な選択肢です。すべてのフォームで、カート追加はテーマ本来のとおりに動きます:
このオプションはカートの読み込み時に一度だけ読み取られます。カートの Initialization スクリプトからのみ機能します。後から ready() の中やイベントハンドラで設定しても何も起こらず、静かに失敗します。
フォーム単位の選択肢が合わないときにだけ使ってください。たとえば、除外する必要のあるフォームが別のアプリによって生成されており、確実に特定できない場合です。

カートアイコンは別

ヘッダーのカートアイコンは、独自のインターセプターと独自のオプトアウトで扱われます。カート追加のインターセプトをオフにしても、カートアイコンの挙動は変わりません。その逆も同様です。 カートアイコンをクリックすると /cart へ移動する代わりに、Aftersell のドロワーが開きます。特定のアイコンやボタンだけをそのままにするには、それ自身か、周りのどれかの要素に aftersell-cart-wont-open-cart クラスを追加してください:
そのコントロールはテーマがさせるとおりの挙動になり、通常はカートページに遷移します。Aftersell は完全に関与しなくなるため、ドロワーは開きません。カート追加とは違って監視するリクエストがないので、そのコントロールからカートを開きたいなら、そう指示する必要があります:
同じ「かき消し」の問題がここにも当てはまります。Aftersell がクリックを止めているので、あなたのアナリティクスやピクセルもカートアイコンのクリックを見られません。それを直したいだけなら、ドロワーは残したまま、かき消しを止めてください:
これで自分のリスナーが実行され、ドロワーもいつもどおり開きます。クリックが /cart へ遷移しないという挙動も維持されます。詳細は Configure を参照してください。
カートを開く要素をオフにするのではなく、どの要素がカートを開くかを変えるには、テーマを編集する代わりに Cart settings → Advanced → Cart icon selector を使ってください。

次のステップ