オンラインストアの領収書
WCPOSの領収書テンプレートは、レジでの利用に限られません。オンラインストアのお客様は、WP Admin → POS → テンプレート のカスタムテンプレートで生成された注文の領収書または請求書を、マイアカウントまたは注文確認ページから表示・ダウンロードできます。
ストアフロントでの領収書アクセス(マイアカウントボタンと [wcpos_receipt] ショートコード)は、WCPOS 1.9.11 で提供されます。以下で説明する お客様による領収書のダウンロードを許可 設定と お客様用の領収書テンプレート 選択機能は 1.9.12 で追加されました。1.9.11 では、ボタンはデフォルトで有効になっており、制御する設定はありません。それ以前のバージョンでは、領収書はPOS内でのみ生成されます。
レジ担当者やスタッフには、これらの設定は必要ありません。POS の 注文 画面にはオンライン注文を含むすべてのWooCommerce注文がすでに表示され、三点メニューから領収書の表示、印刷、メール送信ができます。このページでは反対に、お客様がウェブサイトから自分で領収書をダウンロードできるようにする方法を説明します。
マイアカウントのダウンロードボタン
領収書ボタンは、デフォルトで無効です。POS > 設定 > 一般 の 顧客 セクションで、お客様による領収書のダウンロードを許可 を有効にしてください。有効にすると、ログインしているお客様には マイアカウント → 注文 の対象注文の横に 領収書 ボタンが表示されます。クリックすると、領収書テンプレートで生成された PDF (receipt-1234.pdf) がダウンロードされます。
このボタンは、支払い済みの注文ステータスである処理中、完了、返金済みの注文に表示されます。保留中、キャンセル済み、失敗した注文には表示されません。(開発者は表示するステータスを変更できます。)
また、有効なレシートテンプレートが必要です。有効なテンプレートがない場合はレンダリングするものがないため、設定がオンでもボタンは非表示のままです。
以下の[wcpos_receipt]ショートコードは、この設定のオン・オフにかかわらず機能します。この切り替えは、自動表示されるマイアカウントボタンのみを制御します。
[wcpos_receipt]ショートコード
注文確認(「ありがとう」)ページまたはマイアカウント → 注文を表示ページにレシートへのリンクを追加するには、次を使用します。
[wcpos_receipt]
属性を指定しない場合、ショートコードはどちらのページでも現在の注文を自動検出し、*レシートをダウンロード (PDF)*リンクを表示します。その他のページでは何も出力しません。明示的なorder_idは、その注文を所有するログイン済みの顧客に対してのみ機能します。
属性
| 属性 | デフォルト | 内容 |
|---|---|---|
order_id | (自動検出) | 特定の注文へのリンク。注文を所有するログイン済みの顧客に対してのみ機能します。 |
link_text | Download receipt (PDF) | リンクテキスト。 |
format | pdf | pdf は PDF をダウンロードし、html は代わりに印刷可能なレシート表示を開きます。 |
template | (ストアフロントのデフォルト) | ストアフロントのデフォルトではなく、特定のテンプレート ID でレンダリングします。 |
class | wcpos-receipt-link | リンクの CSS クラス。 |
id | (なし) | リンク用の HTML id。 |
例
注文確認ページのダウンロードリンク:
[wcpos_receipt link_text="Download your invoice"]
PDF ではなく、画面上の(印刷可能な)レシートへのリンク:
[wcpos_receipt format="html" link_text="View your receipt"]
特定のテンプレートでレンダリングします。たとえば、80mm のレジレシートではなく A4 請求書テンプレートを使用します:
[wcpos_receipt template="123" link_text="Download invoice (PDF)"]
テンプレート ID は、WP Admin → POS → テンプレート のテンプレート編集画面の URL にある番号 (post=123) です。
顧客にはどのテンプレートが適用されますか?
トグルのすぐ下にある 顧客用レシートテンプレート で、ダウンロードに使用するテンプレートを選択します。デフォルトは アクティブなレシートテンプレートを使用 のため、顧客には POS で使用するテンプレートと同じものが提供されます。アクティブなテンプレートを変更すると、顧客用レシートにも自動的に反映されます。
オンライン注文の見た目を変えるには、代わりにドロップダウンから特定のテンプレートを選択します。そうすると、レジのドロップダウンでレジ係が選択するテンプレートに関係なく、顧客のダウンロードでは常にそのテンプレートが使用されます。顧客用テンプレートが幅の狭い感熱紙形式のレシートの場合、PDF も狭くなります。オンライン注文にはフルページの文書が適している場合があり、ギャラリーの 請求書 テンプレートは A4/Letter 向けに設計されています。
この設定は マイアカウント ボタンを制御します。特定のページに一度だけリンクを設定する場合は、ショートコードの template 属性でテンプレートを上書きできます。または、下記の開発者向けフィルターを使用して、ボタンを含むサイト全体のテンプレートを変更できます。
テンプレートは POS と同じレシートデータペイロードからレンダリングされるため、ロゴ、店舗情報、税設定、カスタマイズもすべて引き継がれます。
セキュリティ
レシートリンクには注文固有のキーが含まれます。これは WooCommerce が注文確認ページで使用しているものと同じ仕組みです。そのため、アカウントを作成せずにチェックアウトしたゲストでも、確認ページのリンクを利用できます。リンクを持たないユーザーは、その注文の顧客としてログインする必要があります。order_id を明示的に指定したショートコードは、その注文の所有者としてログインしている場合にのみレンダリングされます。
すべての WCPOS チェックアウトページと同様に、レシート URL は WordPress のリライトルールを使用します。基本 パーマリンク(設定 → パーマリンク)を使用しているサイトでは、別のパーマリンク構造に切り替える必要があります。
開発者向け
3 つのフィルターでストアフロント画面を制御します。これらは上記の設定に重ねて適用され、設定では表現できない条件付きロジック(注文ごと、顧客ごとなど)に便利です。
// Force the My Account Receipt button on or off, overriding the setting.
// The filter's default value is the "Let customers download receipts" setting,
// so you only need this to override it — e.g. show the button for one user role.
add_filter( 'woocommerce_pos_storefront_receipt_my_account_button', '__return_true' );
// Change which order statuses show the button (default: processing, completed, refunded).
add_filter( 'woocommerce_pos_storefront_receipt_order_statuses', function ( $statuses, $order ) {
$statuses[] = 'on-hold';
return $statuses;
}, 10, 2 );
// Use a different template for storefront PDF downloads, overriding the
// "Receipt template for customers" setting. Receives and returns the full
// template array (null when none is configured).
add_filter( 'woocommerce_pos_storefront_receipt_template', function ( $template, $order ) {
return \WCPOS\WooCommercePOS\Templates::get_template( 123 );
}, 10, 2 );
PDF ルートは /wcpos-checkout/wcpos-receipt/{order_id}?key={order_key}&format=pdf です。これは POS がレシートに使用する、同じ注文キーで制限されたエンドポイントです。format=pdf を指定すると、画面表示ではなくレンダリング済みの PDF が返されます。