購入完了ページで、会員登録していない顧客の場合、会員登録画面へのリンクを表示したいと思っています。
「設定」→「チェックアウトとアカウント」→「注文状況ページ」の
テキストエリアに以下のスクリプトを書きました。
{%- unless checkout.customer.has_account -%}
<script>
Shopify.Checkout.OrderStatus.addContentBox(
'<a href="/account/register">会員登録はこちら</a>'
)
</script>
{%- endunless -%}
実際に動かしてみると会員登録済みの顧客でも会員登録画面へのリンクが表示されてしまいます。
console.logで checkout.customer.has_account を出力してみると、会員登録の有無に限らずfalseが設定されているようです。
checkoutオブジェクトの公式ドキュメントを拝見すると確かにcustomerというプロパティが存在しており、且つ、customerにはhas_accountというプロパティが存在しているようです。
そこで以下2点質問させて頂きます。
・checkout.customer.has_accountは使用できなくなってしまったのでしょうか。
・checkout.customer.has_accountを使用せずに、またアプリを使わずに購入完了ページで顧客の会員登録状態を知る術はありますでしょうか。
もしお分かりになる方がいらっしゃいましたら、ご教授頂けますと幸いです!
Toshi-Sさま
はじめまして、フルバランスの園畑です。
ご質問を確認いたしました。
確認してないため、解決可能かは定かではないですが、
以下のコードを囲った場合はいかがでしょうか?
{%- unless customer -%}
{%- endunless -%}
チェックアウトページは基本的にshopify plusプランで変更が可能になるため、
制約は多いかと存じます。
もし解決が難しいようでしたら、shopifyサポートに対応可能か直接質問をするのも良いかと存じます。
ご参考までに。
私たちの励みにもなりますので、 お役に立てていればBest Answerボタンを押して頂ければ嬉しいです。
分からない点があれば、またいつでもご連絡ください。
フルバランス 園畑
1 Like
フルバランス園畑さま
ご回答誠にありがとうございます。
{%- unless customer -%}
{%- endunless -%}
ご教授いただいた、上記コードで囲って試してみたのですが、
会員、非会員どちらも会員登録画面へのリンクは表示されませんでした。
なお、console.log(customer); としてcustomerの中身を確認してみたのですが、
会員、非会員問わず、CustomerFromAddressableDropというものが出力されました。
ですので非会員でもcustomerオブジェクトには何かしら設定されているようでした。
チェックアウトページはshopifyPlusでないといじれないのは認識しているのですが、
購入完了ページであれば、簡単なオブジェクトであれば使えると思っておりましたが、難しそうですね。
他の方法も検討してみたいと思います!
この度は私の質問に丁寧に回答いただきありがとうございました!