MevvAtelier ドキュメント

お客様が「はい」と言うまで、何も生産に入りません。

MevvAtelier は受注生産の流れを WooCommerce の中に置きます。注文の価格をあなたのサーバーで計算するコンフィギュレーター、アップロードされた写真が決して外に出ない保管庫、お客様がアカウントなしで開いてプレビューを承認する署名付きリンク、前にしか進まない四つの注文状態、そして何が遅れているかを示す工房キューです。このガイドでは、インストール、作成するページ、価格の置き場所、キュー、お客様が見るもの、そしてうまく動かないときに確認することを扱います。

できること

たった一人のために作られる商品は、通常の商品ページには収まりません。お客様は写真を送らなければならず、あなたはその品を作らなければならず、そしてお客様は材料を使う前にそれを見て同意しなければなりません。手作業でやればそれはメールの連鎖であり、その連鎖は毎回同じ場所で切れます。あなたが実際に印刷したバージョンをお客様が承認したのかどうか、誰も確かなことを言えないのです。

MevvAtelier はその連鎖を注文の一部にします。注文が写真、プレビュー、承認、そしてその時刻を自ら持ち、通過する状態は本物の WooCommerce 注文ステータスなので、注文一覧にもレポートにも、すでにお使いのフィルターにも現れます。

こう使ってください
お客様から送られたものをもとに注文ごとに製作していて、生産開始前にお客様の承認を記録として残したい場合。
商品オプションのプラグインではありません
バリエーションのマトリクスも、商品ごとのオプションビルダーもありません。受注生産する一つの製品ラインのための、一本の流れと一つのコンフィギュレーターページです。
写真はメディアライブラリの添付ファイルではありません
独自の保存期限を持つ非公開ファイルです。お客様の写真は商品写真ではなく、そのようには扱われません。

必要環境: WordPress 6.0 以降、PHP 8.1 以降、および WooCommerce。WooCommerce がなければプラグインは自ら停止し、そのことを表示します。頼れる独自の注文パイプラインを持っていないからです。

設定と、残されたひとつの制約

店が普段変えるものはすべて Atölye → Ayarlar にあります。各パッケージの名称、一人から六人までの価格、二つの追加オプションの価格、どのパッケージで塗装セットが無料になるか、ページを開いたときにどれが選択されているか、そして写真をどれだけ保存するかです。

価格はリラで入力し、プラグインは補助単位の整数で保存します。保存は全か無かです。ひとつでも読み取れない欄があれば、どれも書き込まれず、画面がどの欄かを教えます。半分だけ書かれた価格表は、まさに客が注文している瞬間に壊れる表です。

パッケージの名前を変える
同梱の名称が 3D プリントのフィギュアを指しているのは、最初に作られた店がそうだったからです。ご自分の名前を入力してください——「小さなペンダント」「彫刻プレート」「A4 プリント」——それがそのまま客の目に入ります。各欄の隣にある内部キーは決して変わらないので、既存の注文は正しい対象を指し続けます。
五つ未満で売る
パッケージの名前を空にすると注文フォームから消え、それでも誰かが送信してきたらサーバーが拒否します。価格は表に残るので、後で戻すのは一語であって、入力し直しではありません。
どのパッケージが選択された状態で開くか
技術ではなく商売の判断です。中位の段は客を上へ、最安の段は下へ錨を下ろします。選んだものが後で無効にされた場合、フォームは価格なしで開くのではなく、まだ有効な最初のパッケージに戻ります。

残された制約:パッケージの枠は五つです。名前を変え、値段をつけ、無効にすることはできますが、六つ目を足すことはできません。あなたの商品ラインにもっと必要なら、いくつ必要かを書いてご連絡ください。次に作られるのはそれで、実際の数を知ることがその形を決めます。

インストール

  1. まず WooCommerce をインストールして有効化してください。MevvAtelier はそれなしでは起動を拒否します。
  2. MevvAtelier をインストールします。プラグイン → 新規追加から zip をアップロードするか、mevvatelier ディレクトリを /wp-content/plugins/ にコピーします。
  3. 有効化します。有効化時にプラグインは注文ステータスを登録し、写真保管庫のディレクトリを作成し、毎日の保存期間ジョブを予約します。
  4. ページを作成し、そこに [mevvatelier] ショートコードを置きます。そのページが注文フォームになります。
  5. そのページからテスト注文を出し、管理メニューの Atölye を開いて最初から最後まで一度通してください。ページを宣伝する前に行ってください。一周は五分で終わり、あなたのストアが実際に送るメールを確認できる唯一の方法です。

承認リンクは、初回使用時に生成されあなた自身のデータベースに保存される秘密鍵で署名されます。この鍵はあなたのサーバーから外に出ず、当社が保持する何かから導出されるものでもありません。

三つのショートコード

[mevvatelier]
注文フォーム。五つのステップ、すなわちパッケージ、場面に登場する人数、写真、お客様の情報、そして同意チェックです。お客様が選ぶあいだ途中経過の合計を表示しますが、その合計が注文の金額として書き込まれることは決してありません。「価格の置き場所」をご覧ください。
[mevvatelier_tanitim]
ホームページ用の告知バンドです。見出し、短い紹介文、そして注文フォームへのボタン。添付 ID を取ります: [mevvatelier_tanitim gorsel="123"]
[mevvatelier_gorsel]
メディアライブラリの画像を、WordPress がすでに生成したレスポンシブサイズで出力します: [mevvatelier_gorsel id="123" size="large"]。告知ページがスマートフォンの 380 ピクセルの枠に 2000 ピクセルの写真を出さないために存在します。

注文ページは、LiteSpeed・WP Rocket・W3 Total Cache がいずれも理解する言い方で自分自身のページキャッシュを無効にし、さらに no-store ヘッダーも送ります。キャッシュされた注文フォームは古いトークンで送信されて静かに失敗し、お客様には「何も起きないフォーム」に見えます。

価格の置き場所

注文の価格は、お客様の選択内容だけからあなたのサーバー上で計算されます。ブラウザーが送ってきた合計は完全に無視されます。いくら請求するかをブラウザーに尋ねることは、ただ同然で買われる最短の道です。金額は小数ではなく補助単位の整数(クルシュ、セント)で保持されるため、長い注文でも請求書と注文のあいだで一単位もずれません。

Atölye → Ayarlar で、リラ単位、クルシュはカンマで編集します。各パッケージには対応するすべての人数——一人から六人——の価格が必要です。表は何かが書き込まれる前に全体が検証され、読み取れない欄があれば画面がどれかを伝えて一つも書き込みません。半分だけ書かれた価格表は、まさに客が注文している瞬間に壊れる表です。

クリックより WP-CLI で配布したい場合、すべては mevvatelier_pricing という一つのオプションに収まっています。プラグインは書き込んだ後にオプションを読み戻し、読んだ内容が一致しない限り成功を報告しません。永続オブジェクトキャッシュの背後にある店には、そうしないと「保存しました」と告げながら古い価格で売り続けさせてしまうからです。

wp eval '
  $t = MevvAtelier_Settings::pricing_table();
  $t["labels"]["orta"]        = "Orta boy kolye ucu";
  $t["packages"]["orta"][1]  = MevvAtelier_Pricing::parse_money( "1.290,50" );
  $t["default_package"]      = "orta";
  var_dump( MevvAtelier_Settings::save_pricing_table( $t ) );
'

内部のパッケージキーは anahtarlikortabuyukanahtarlik_ortauclu_set、追加オプションのキーは paint_kitrush です。コードと既存の注文が参照するのはこれらなので決して変わりません。客が見る名前はそれとは別の欄で、いつでも書き換えられます。

工房キュー

Atölye は、ショップ注文を編集できるすべての利用者の管理メニューに表示されます。未処理の注文を古い順に並べ、約束した時間を過ぎたものを赤く示します。通常は二十四時間、特急注文なら六時間です。答える問いは「何が未処理か」ではなく「何が遅れているか」であり、画面に載せる価値があるのはそちらだけです。

担当者は同じ行からプレビューをアップロードします。アップロードすればファイルは保管庫に収められ、実際に見せたものそのもののチェックサムが記録され、注文は Müşteri onayında に移り、お客様にメールが送られます。覚えておくべき四つの作業ではなく、一つの操作です。

Model bekliyor
wc-mevv-model。写真は届き、モデルを制作中です。お客様のリンクは有効で、まさにこのことを伝えます。
Müşteri onayında
wc-mevv-onay。プレビューを送信済みです。お客様は承認するか、必要な回数だけ修正を依頼できます。
Baskıda
wc-mevv-baski。承認済みで生産中です。修正フォームは画面から消え、この段階では画面だけでなくサーバーも修正依頼を拒否します。

どの状態の次にどの状態が来てよいかは、禁止事項ではなく許可された遷移の一覧として書かれています。誰も思いつかなかった手順は、黙って許可されるのではなく既定で拒否されます。これが状態機械と単なる提案との違いです。

お客様が見るもの

メールで送られる一本のリンク。六十日間有効で、アカウントは不要です。自分のプレビューを見る前に会員登録を求めることは、その承認を失う最も確実な方法なので、リンクは自ら権限を帯びます。署名され、ただ一つの注文を指し、改ざんされたものは何も開きません。

ページは状態ごとに異なる画面を表示し、決してキャッシュされません。キャッシュされた承認ページは、あるお客様のプレビューを次の訪問者に見せてしまうからです。承認リンクはすべてのメールに二度、ボタンとプレーンテキストで現れます。ボタンを描画しないメールクライアントがあるためです。

  • 注文受付 — 注文時にリンクとともに送られます。
  • プレビュー完成 — 担当者がアップロードした時点で送られます。判断を求めるのはこのメールです。
  • 承認記録 — お客様が承認した時点で送られ、生産が始まったことをはっきり伝えます。
  • 発送 — 担当者が完了として印を付けた時点で送られます。

メールはあなたのストア自身の WooCommerce テンプレートを通して組み立てられるので、後から取り付けたものではなく、他のメールと同じ見た目になります。

写真について

アップロードは uploads フォルダー配下の、名前を推測できないディレクトリに置かれ、四重に同時に保護されます。.htaccess のルール、IIS 用の web.configindex.php、そしてサイト以外には読ませないファイル権限です。四つあるのは、そのいずれか一つは誰かのサーバーでは存在しないか無視されるからです。

ファイルは名前が主張する内容ではなく、実際のバイト列によって受け入れられます。.jpg に改名された実行ファイルは入口で拒否されます。拡張子を確認することは、攻撃者自身が用意した書類を確認することだからです。受け入れる形式は JPEG、PNG、WebP、HEIC です。保存名はランダムで、お客様の元のファイル名がファイルシステムに届くことはありません。「ayse-dogum-gunu.jpg」は子どもの名前と日付だからです。

すべての写真とプレビューは一つのゲートウェイを通して配信されます。あなたのチームは WooCommerce の注文権限で、お客様はその注文に対して検証される署名付きリンクで通されます。ある注文のために作られたリンクで別の注文のファイルを開くことはできません。ファイルに公開 URL が与えられることは決してありません。

保存期間
毎日実行されるジョブが、完了した注文のアップロードとプレビューを、あなたが設定した期間の後に削除します。初期設定は六十日で、mevvatelier_retention_days オプションに保存されます。注文と金額と承認記録は残りますが、写真は残りません。
サーバーから出ていくもの
このプラグインからは何も出ません。注文の流れから当社に届く写真も、プレビューも、注文も、テレメトリも、ライセンス通信もありません。保管庫はあなたのディスク上のディレクトリであり、承認の記録はあなた自身の注文メタデータです。

子どもの写真を店舗サーバーに無期限に置いておくことは、機能ではなく責任です。お客様への保存期間の約束が六十日と異なるなら、伝えた内容に合わせてオプションを変更してください。ページ上の数字とプラグイン内の数字は同じ数字であるべきです。

承認、キャンセル、そして撤回権

トルコの通信販売規則では、消費者自身の仕様に従って作られた商品は、製作後は撤回権を持ちません(Mesafeli Sözleşmeler Yönetmeliği 第 15/1-b 条)。MevvAtelier はこれを軸に作られています。お客様には承認画面でその旨が示され、同意した時点が承認とともに注文に書き込まれます。

承認前は何も製作されていないので、キャンセルで失うのはモデル一つだけで材料は失いません。WooCommerce で注文をキャンセルし、他の注文と同じように返金してください。承認後は修正フォームが消え、サーバーが修正依頼を拒否します。その時点で材料が投じられているからです。

これはプラグインが何を記録するかの説明であり、法的助言ではありません。あなた自身の通信販売契約と事前情報フォームも同じことを述べている必要があり、その部分のためのプラグインが MevvLegal です。

トラブルシューティング

注文フォームを送信しても何も起きない
ほとんどの場合、ページのキャッシュされた複製が原因です。フォームは使い捨てのトークンを持ちますが、キャッシュされたページは古いものを配るので、静かに拒否されます。そのページをキャッシュから消し、プラグインの no-store ヘッダーがブラウザーまで届いているか確認してください。一部の CDN はエッジでこれを取り除きます。
お客様がリンクは動かないと言う
原因は三つあり、ページがどれかを示します。六十日を過ぎていれば期限切れなので、新しいものを送ってください。メールから手作業で書き写した場合はたいてい一文字欠けています。別の注文を指している場合は、別のメールから転送されたものです。
管理画面で写真が壊れた画像として表示される
保管庫が制御されずにそのまま配信されています。保管庫ディレクトリに .htaccessindex.php がまだ残っているか、ホスティング側が権限をリセットしていないかを確認してください。ファイルに URL で到達できるなら、そちらが問題のより緊急な半分です。
写真なのにアップロードが拒否される
JPEG、PNG、WebP、HEIC のいずれでもないものとして読み取られています。スマートフォンのスクリーンショットやデザインツールが書き出した画像はしばしばそのどれでもありません。JPEG として保存し直せば解決します。確認されているのは拡張子ではありません。
注文が「Model bekliyor」から動かない
ひとりでに進むものはありません。担当者がプレビューをアップロードするのです。チームの誰かにとってキュー画面が空なら、その人がショップ注文の編集権限を持っているか確認してください。この画面は管理者かどうかではなく、その権限で開きます。
古い写真がまだディスクに残っている
保存期間のジョブは WP-Cron 上で動き、これは誰かがサイトを訪れたときにしか発火しません。訪問の少ない店舗ではトラフィックを待ちます。あるいは実際のサーバー cron を向けてください。該当の注文が本当に完了しているかも確認してください。未処理の注文が削除されることはありません。
フォームの価格が設定したものと違う
保存されたテーブルが検証に通らず、プラグインは誤った価格で販売するのではなく既定値に戻りました。その旨を伝える管理者通知が出ています。各パッケージは一人から六人までのすべての人数を必要とし、各金額は補助単位の非負整数でなければなりません。

ご連絡の際は、WordPress・WooCommerce・PHP・プラグインの各バージョン、注文番号、そして四通のメールのうちどれが届きどれが届かなかったかをお知らせください。お客様の写真は送らないでください。