こうすればできるかなと思ったことが試したらできたのでメモ的に。
実現したいこと
- Shopifyで通知メールに、注文ごとに異なる任意の文字列を出力したい
- メタフィールドを利用して管理画面から設定したい
注文ごとに個別メッセージを記載するイメージです。
毎回テンプレートに書いて対応可能かもしれませんが、事故が起こる可能性も高そうなので別の方法としてメタフィールドの利用を検討します。
OS2.0以降であれば、アプリを使わずに管理画面内で注文メタフィールドが直接扱えるため、ちょっとしたカスタマイズ程度なら実行しやすくなっています。
なお当記事公開時点では、上記ヘルプに記載されている一覧に注文メタフィールドに関する記述はなく、出力できるのかどうかも不明でした。
実現方法
{{ metafields.namespace.key }}
通知メールのテンプレートに上記のようにリソース(名前=order)抜きで書けば出力できました。
前出のヘルプに以下のように書かれており、これに従った形で試したら出力されたという次第です。
注文オブジェクトは、メールテンプレートで名前を使用して参照できません。たとえば、注文の確認メールテンプレートでは、{{ order.shipping_method.title }}を使用する代わりに、{{ shipping_method.title }}を使用してください。ただし、SMS通知に関しては、通常通りに注文プロパティの先頭にorderを追加する必要があります。
注文管理画面でのメタフィールド
商品管理画面でのメタフィールドであればページ下部に見えているのですが、注文管理画面ではメタフィールドの表示位置が違います。
- 各注文の管理画面の「タイムライン」の上に「メタフィールド」欄が表示される
なお、メタフィールドのタイプが「一行テキスト」や「数値」であれば管理画面内に欄と内容が表示されますが、複数行の場合は表示されず以下の手順を踏む必要があります。
- 「すべてを表示」というテキストリンクをクリック
- 専用の画面に移動して値の入力と保存
結び
本番で使うならメタフィールドの値の有無を判別し、値があれば関連するHTMLやら見出しやらを出力するような加工が必要になると思います。
追記
テンプレート上に任意の文字列を記載し、真偽値のメタフィールド使って表示非表示を切り替えるなど面白そうな運用ができそうではあります。
例えば、「誕生日おめでとうございます!」という一文を発送通知テンプレート内に用意し、「発送通知:誕生日お祝い文表示」のような名称で真偽値のメタフィールドを作成すれば、真偽値の切り替えのみでお祝い文言が通知メールに出力できます。
テキストや真偽値以外にもタイプはあるので、工夫次第で効率化とカスタマイズした演出が簡易にできるようになるかもしれません。
3人がこの記事を評価
役に立ったよという方は上の「記事を評価する」ボタンをクリックしてもらえると嬉しいです。
連投防止のためにCookie使用。SNSへの投稿など他サービスとの連動は一切ありません。