Alicia
投稿の際は下記の情報をお書き添えください。
-------------------------------------------
WordPress のバージョン:(例 6.0.2)
Welcart のバージョン:(例 2.8.1)
PHP のバージョン:(例 8.0)
Welcart専用の拡張プラグインとバージョン:(例 DL Seller 3.4.1、SKU Select 1.4.2)
ご利用の親テーマとバージョン :(例 Welcart Basic 1.7.1)
ご利用の子テーマとバージョン :(例 Welcart Beldad 1.4)
症状を確認したブラウザ:
サーバー【重要】:(会社名、サービス名)
--------------------------------------------
フォーラムへの返信
-
投稿者投稿
-
Alicia参加者
JK 様
素晴らしい!
最初の大きな一歩ですね。Alicia参加者JK 様
こんにちは。
Welcart での焼き菓子の通販は諦めて、ホールケーキの店頭予約販売だけに絞ると言うことですね。
他に何か不都合なことが出るのかもしれませんが、「指定しない」は、フィルターフックで簡単に消せます。usces_filter_cart_delivery_script
ただ、ご質問内容を見る限り、誠に失礼ながらフックの使い方の理解が不足しているようです。
usces_the_delivery_date は、フィルターフックではなく関数です。
まずは、Welcart のカスタマイズとフックをよく読んで、簡単なカスタマイズから実践を積んでみると良いと思います。Alicia参加者indirect 様
こんにちは。
されたいことが具体的でないために、返しづらいです。
商材は何でしょう? 何をどのように載せたいのでしょうか?どの部分のヒントが必要でしょうか?さっぱり分からないので、勝手な想像で進めますね。時間の都合でヒントだけです。
まず、セルフメディケーション対象商品、たばこ、お酒などお馴染みの商材ならば、SKU名に、※印などを付けておいて、「※は、〇〇対象商品です。」のような定型句を、商品明細行のオプション情報のすぐ後に付加する場合には、フィルターフックの usces_filter_advance_ordermail が良いかもしれません。
この場合、コメントの種類もそう多くないでしょうから、直接、テーマの functions.php に条件分岐とともに定型句もそこに一緒に書けば良いでしょう。次に、レシピとか、取説とか、注意書き、保存方法、お手入れ方法・・・などでしょうか。商材の種類が多くて、文章が長い場合ですが、SKUごとにコメントが全部違うとなるとカスタムフィールドが必要になると思います。このようなものは、SKUコードと紐付けしてACFなどを使って格納しておいて、サンキューメールから呼び出す仕組みが必要になりますね。
私の場合は、SKUごとに商材のメイン画像や商品詳細ページへのURLを商品名にリンクさせるなど、サンキューメールの明細行に追加したりしています。
furuta 様が仰っているフックの他にも、サンキューメールの場所によって複数のフックがありますので、まずはご自身で、どこに何を載せるかもう少し整理されてみてはいかがでしょうか。
少しでもヒントになっていれば良いのですが。
Alicia参加者すみません。漏れてました。
——————————————-
テスト環境
WordPress のバージョン: 6.4.3
Welcart のバージョン: 2.10.2
PHP のバージョン: 8.0.30
Welcart専用の拡張プラグインとバージョン: WCEX SKU Select 1.4.5 WCEX Multi Price 1.3.3
ご利用の親テーマとバージョン : Welcart Basic: 1.8.3
ご利用の子テーマとバージョン : なし
症状を確認したブラウザ: Chrome
サーバー【重要】:Xserver シン・レンタルサーバー ベーシック
——————————————–Alicia参加者いつも、大変お世話になっております。
同じようなことを考えていましたら、このトピックに辿り着きました。
一応カスタマイズは完成して無事動いているのですが、1箇所、探しようが下手なのかどうしても、フックを見つけることができず、今のところ魔改造になってしまっています。フックの設置をご検討頂けないでしょうか。
やりたいことは、このトピ主様と同様です。
$shipping_rule につきまして、
【デフォルト】
0 ⇒ –選択–
1 ⇒ 即日
2 ⇒ 1~2日後
3 ⇒ 2~3日後
4 ⇒ 3~5日後
5 ⇒ 4~6日後
6 ⇒ 約1週間後
7 ⇒ 約2週間後
8 ⇒ 約3週間後
9 ⇒ 商品入荷後のところ・・・
【カスタマイズ】
0 ⇒ –選択–
1 ⇒ 本日中
2 ⇒ 明日中
3 ⇒ 明後日中
4 ⇒ 3日以内
5 ⇒ 4日以内
6 ⇒ 5日以内
7 ⇒ 6日以内
8 ⇒ 7日以内
9 ⇒ 8日以内
・
・
31 ⇒30日以内
32 ⇒31日以内
33 ⇒準備でき次第のようにフックで変更しました。
また、sagawa 様がご説明されている、$shipping_indication もフックで変更できました。
array( 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0 )
上記の結果、商品詳細ページなどの管理画面は、問題なくカスタマイズ完了しました。
次に、フロント側のカートの「発送・支払方法」ページの 到着希望日の計算の Java の制御についてです。
【カスタマイズ】
0 ⇒ –選択– ← 元々の ID=0 は変わらずなので問題は起こりません
1 ⇒ 本日中
2 ⇒ 明日中
3 ⇒ 明後日中
4 ⇒ 3日以内
5 ⇒ 4日以内
6 ⇒ 5日以内
7 ⇒ 6日以内
8 ⇒ 7日以内
9 ⇒ 8日以内 ← 元々の ID=9 は「商品入荷後」だったので影響が出てきます
・
・
31 ⇒30日以内
32 ⇒31日以内
33 ⇒準備でき次第 ← 元々の ID=9 の「商品入荷後」の役割をさせたい問題となる該当のコードですが、
delivery_info_script.php (Welcart 2.10.2 現在) 内74行目
if ( 0 === (int) $item_shipping || 9 === (int) $item_shipping ) {
及び
205行目
case 9:
について、205行目につきましては、フックが存在しましたので、問題なく case 33: に変更できました。
フックを見つけられなかったのは、74行目の方です。
74行目
if ( 0 === (int) $item_shipping || 33 === (int) $item_shipping ) {
に変更したいのですが、現在のところ、御法度をやらかしたままです。
コードの下の方まで読んで、何とか丸ごと書き換えられる場所がないかと悩んだのですが、私の現在の力量では及びませんで、詰んでしまいました。この部分が修正できないと、結局のところ、元々のID=9 の位置にある「8日以内」に設定した場合に、フロントサイドのカートの「発送・支払方法」ページにて到着希望日が「指定できません」になってしまいます。
この74行目の
if ( 0 === (int) $item_shipping || 9 === (int) $item_shipping ) {
について、75行目の $shipping をフックで修正できるようにならないものでしょうか。
毎度、お忙しいところ恐れ入りますが、ご検討よろしくお願いいたします。
Alicia参加者furuta 様
ご回答ありがとうございます。
なるほど、組み合わせる決済システム側でしたか。
いずれにしましても利用していないので私には分からないのですが、こちらのファイルには、今回のようなエラーメッセージを書き換えるフィルターフックは備わっていないのでしょうか?
もしそのフック名が同じであれば、第3引数がわかればメッセージを区別することができるかもしれません。ひょっとしたら決済システムごとに第3引数が異なっていて、そもそもそれほど重要でもなく、default で統一したメッセージで流して良いものなのかもしれませんね。
ありがとうございました。解決済みとしてください。
Alicia参加者furuta 様
yskysmr 様Welcart 2.10.2 にてフックの追加を確認しました。この度は、迅速にご対応いただきまして誠にありがとうございました。
早速、エラーメッセージを書き換えることができました。
標準で備わっている4箇所に対応できました。
「クレジットカード登録・更新ページ」については、該当プラグインを使っておらず、フックの第3引数が分かりませんでしたので、switch の default; で逃しましたが、その他は適切にエラーメッセージを振り分けて対応することができました。
$threshold (閾値)を1.0 に上げてテストもうまくできました。(こういうときにも新機能は便利ですね。)
最終的に、Contact Form 7 でお問い合わせいただくようにしようかと考えていたのですが、CF7でも v3 に蹴られることがあったので、サポート対応のメールアドレスをエラーメッセージに載せることにしました。
これで v3 が不安定でも、少し安心できそうです。
Welcart ✕ CF7 ✕ reCAPTCHA v3 で新たに別の疑問ができましたので、また後日別トピックに載せたいと思います。
この度は、お世話になりまして、ありがとうございました。
このトピックは解決済みとしてください。よろしくお願いいたします。Alicia参加者kurita 様
ご丁寧に返信いただきましてありがとうございます。
今後ともよろしくお願いいたします。Alicia参加者JK 様
これまでの過去のトピックを見る限りでは、カート周りのこのような変更は、カスタマイズの範疇を超えて大幅な改造になってしまいますので、ほぼ不可能かと思います。
ただ、考え方を少し変えるだけで、お望みのカートを Welcart で実現できる可能性もあります。
残念ながらやりたいことを具体的に書かれてないので、前回のトピックを読んで誠に勝手ながら推測だけで進みますが、時間の都合、考え方のヒントだけでもお伝えできればと思います。【考え方】
まず、商品を配送方法で分類します
1.ホールケーキなどの配送困難な生菓子類→店頭受け渡し予約販売とする
2.冷凍ケーキなどの通販可能なもの→冷凍便を使った通販(なければ無視してください)
3.チョコレート類→冷蔵便を使った通販(なければ無視してください)
4.焼き菓子類→常温での通常の通販のように分類して、区分の異なる商品が同一のカートに入らないようにする。
配送設定で配送方法をそれぞれ設定する
1.ホールケーキなど生菓子類→「店頭受け渡し」 指定時間帯指定しない 配達日数は利用しない 送料固定無料
2.冷凍ケーキ→「宅配便」 指定時間帯を指定 配達希望日数を設定する クール区分 冷凍 送料固定有料
3.チョコレート類→「宅配便」 指定時間帯を指定 配達希望日数を設定する クール区分 冷蔵 送料固定有料4.焼き菓子→「宅配便」 指定時間帯を指定 配達希望日数を設定する クール区分 常温 送料固定有料
配送設定で、配送方法を配送の優先順位を上から 1.→ 2.→ 3.→4.の順に並べる。
更に商品ごとに商品情報編集の配送方法で1.2.3.4.のどれに該当するか設定する。
1カートにつき1配送方法でしか注文できないので、オーダーレベルでは、これだけで自然と分かれます。
もし、ホールケーキと焼き菓子が同一カートに入れられたときには、店頭受け渡ししか選ぶことができなくなります。間違っても、ホールケーキに「宅配便」を選択されることはありません。焼き菓子を通販したければ、焼き菓子だけをカートに入れれば普通の通販の注文を受けられます。詳細な制御は、後述するバリデーションで制御するようにします。また、ご利用方法として、同一カートに1.2.3.4の混載はできない旨説明しておきます。カートページ設定のヘッダなどにも記載しておくことをおすすめします。(ホールケーキ類と焼き菓子のご注文はカートを分けて別々に注文いただく。)
上記が基本です。
で、今回のご質問のところについてどうするか考えます。
カートの3ステップ目(配送・支払方法)では、最短の配達可能日を算定するために配送地域や商品ごとの発送準備期間、配送休業日を考慮して、内部計算が行われています。ご要望の内容では、同一カート内の複数の商品ごとに、配達希望日をそれぞれ設定できるようにすることと同義になってしまいます。日時を変えて何度も配送しなくてはならず、これはシステム上極めて困難ですし、普通は誰も望まないでしょう。
例えば、クリスマスケーキの店頭受け渡しの予約販売を想定しておけばいいだけなのであれば、もっと単純に考える必要があります。配達可能日の内部計算もそもそも不要ですから。システムの日数計算は回避させます。
一日に焼けるホールケーキの制約もありますので、ケーキの種類、号数、そして、受け渡し予約販売日時をSKUで管理する必要があります。→プラグインWCEX SKU Select で作成します。
ろうそくの数やラッピングなどのオプションも必要になると思います。→プラグインWCEX Multi Price で作成します。
その他 ケーキに名前も入れる必要がありますので、名前を入れるオプションも必要です。
最近では、ケーキに顔写真を印刷できたりしますので写真を送ってもらう必要があったりします。これは、Contact Form 7 などで別に作ってもいいかもしれません。
SKU Select のところだけもう少し詳しく書きます。
ケーキは季節ものですので、年間を通じてそのケーキが購入できる期間がそれぞれある程度決まっていると思います。ですので、ケーキの種類ごとに1商品と考えます。
そして、ホールケーキならば、号数と予約販売日時をSKU Select の項目とします。
クリスマスケーキならば、焼き上がり予定日時で在庫管理ができるようになります。予め生産計画個数をSKUの在庫数に設定することで、販売計画が立ちます。生産計画を上回る受注はできなくなります。焼き上がる日時(受け渡しの日時)をSKUの一つ目として、
例えば、
12/22 10時~12時
12/22 12時~14時
12/22 14時~16時
12/22 16時~18時
12/23 10時~12時
12/23 12時~14時
12/23 14時~16時
12/23 16時~18時
12/24 10時~12時
12/24 12時~14時
12/24 14時~16時
12/24 16時~18時
のように設定します。SKUの二つ目をホールケーキの号数にします。
例えば
4号
5号
6号
7号
のように設定します。あとは、受け渡し日時 ✕ 号数 でそれぞれ台数を設定します。
クリスマスケーキA
SKU
12/22 10時~12時 ✕ 4号 10台
12/22 10時~12時 ✕ 5号 10台
12/22 10時~12時 ✕ 6号 10台
12/22 10時~12時 ✕ 7号 5台
12/22 12時~14時 ✕ 4号 10台
12/22 12時~14時 ✕ 5号 10台
12/22 12時~14時 ✕ 6号 10台
12/22 12時~14時 ✕ 7号 5台
12/22 14時~16時 ✕ 4号 10台
12/22 14時~16時 ✕ 5号 10台
12/22 14時~16時 ✕ 6号 10台
12/22 14時~16時 ✕ 7号 5台
・
・
・クリスマスケーキB
SKU
12/22 10時~12時 ✕ 4号 8台
12/22 10時~12時 ✕ 5号 8台
12/22 10時~12時 ✕ 6号 8台
12/22 10時~12時 ✕ 7号 3台
12/22 12時~14時 ✕ 4号 8台
12/22 12時~14時 ✕ 5号 8台
12/22 12時~14時 ✕ 6号 8台
12/22 12時~14時 ✕ 7号 3台
12/22 14時~16時 ✕ 4号 8台
12/22 14時~16時 ✕ 5号 8台
12/22 14時~16時 ✕ 6号 8台
12/22 14時~16時 ✕ 7号 3台
・
・
・
定番ケーキなど1年を通じて販売するものは、SKUが多くなりすぎるとシステムの負荷が重くなりますので、たとえ商品内容が同じであっても、SKU数が多くなりすぎないように、一定期間で区切って、複写したものを新しい商品として登録し直した方が良いと思います。削除すると購入履歴などに影響がありますので残しておくようにします。
以上のように設定すれば、ご質問内容のように、
到着希望日と到着時間の選択を、商品をカートに追加する際に選択できるようになります。あとは、余力があれば・・・
ホールケーキは、配送がないので色々不都合な点が出てきます。
配送方法が「店頭受け渡し」という条件で、各々のフィルターフックで内容を差し替える必要があります。・サンキューメールなどの「配送先」欄が不要なので、「受け取り方法」などに書き換え
・内容確認ページの配送先情報も同様に書き換え私の場合は、「店頭受け渡し」の場合は、「店頭にて決済」を作って、それしか選択できないように制限したり、最初からラジオボタンにチェックが入るようにしたり、カスタマイズしています。
ケーキの予約販売なら、いらずら注文防止のため、クレカとか前払いとかにする方がいいのかもしれませんね。カートの3ステップ目(配送・支払方法)→4ステップ目(内容確認)へ遷移する際のバリデーションが役に立ちます。→ usces_filter_delivery_check
選択できない配送方法やオプション等もこのフックを使ってゴリゴリにカスタマイズしていきます。
ここは、作り込みに結構時間が掛かります。良いお店ができることを楽しみにしています。
Alicia参加者ikeda 様
こんにちは。
Welcart 2.9.14 ~ こちらのタグも不要になっているかと思います。
ミスリード回避のため、私の認識で問題ないようでしたら、こちらのトピックも解決済みとしてください。こちらも、「よくある質問」を整理いただけますと幸いです。
よろしくお願いいたします。Alicia参加者ikeda 様
こんにちは。
いつもお世話になっております。Welcart 2.9.14 にて、reCAPTCHA v3 が修正されてからしばらく経ち、落ち着いたものとお見受けいたしますが、その後いかがでしょうか?まだ流動的でしょうか?
よくある質問
Welcart 2.9.11からの「配送・支払方法ページに Google reCAPTCHA を適用」のアップデートで、配送・支払方法ページから内容確認ページに進めなくなりました。
におきまして、ご利用のテーマの配送・支払方法ページのテンプレート「wc_delivery_page.php」に
…が存在していない可能性があります。このタグがない場合は Welcart Basic の「wc_delivery_page.php」を参考に追加してみてください。
ただし、usces_cart.css を無効化していない場合はスタイルの崩れが発生し、調整が必要になる場合もあります。
いずれにしても、”delivery-info” タグがないテーマでも動作するように仕様を検討いたします。と記されていますが、Welcart 2.9.14 でこの仕様が変更されて、”delivery-info”は、不要になったのではないでしょうか?その他の v3 導入ページと説明されているページについても同様に変更になっているかと思われます。
「お客様情報ページ」
wc_templates/cart/wc_customer_page.php
<form …name=”customer_form”…>…</form> →不要になった?「新規会員登録ページ」
wc_templates/member/wc_new_member_page.php
<div id=”memberpages”…>…</div> →不要になった?マイページの「クレジットカード登録・更新ページ」
wc_templates/member/wc_member_page.php ?
私は、WCEX DL Seller や WCEX AutoDelivery で該当決済サービスを使っていないので、調べられませんでした。 →不明のまま おそらく不要になった?また、同じく、よくある質問
拡張機能の Google reCAPTCHA を有効化しましたが、バッジが表示されません。
におきましては、Welcart 2.2 からの機能です。
2.2 では「新規会員登録ページ」と「お客様情報ページ」
2.5.5 からはマイページの「クレジットカード登録・更新ページ」
2.9.11 からは「配送支払方法ページ」と「内容確認ページ」に適用を追加しています。となっていますが、
Welcart 2.9.14 ~、「内容確認ページ」には、v3 が読み込まれなくなりました。ミスリード回避のため、落ち着いているようでしたらこちらの、「よくある質問」を整理いただけますと幸いです。
私の認識に問題がないようでしたら、このトピックを解決済みとしてください。
以上、お忙しいところ恐れ入りますが、よろしくお願いいたします。Alicia参加者rah-hy 様
ご連絡ありがとうございます。
イエローカードなんて出されてないと思いますよ。南部社長がこのフォーラムを作られた趣旨として、「このフォーラムは、ユーザー同士で情報を交換する場所です。サポートサイトではありませんのでご了承ください。」と仰っているように、有償サポートとは根本的に異なります。本来は会員同士の互助精神がないと成り立たないものかと思います。キーマスターの方のご厚意は当然のものではありませんし、お時間を割いてくださるのも限界がありますので、「焦らず気長に待つ」ということと、ユーザーも含めて「誰も回答できない」こともあるということの理解が必要です。
特にカスタマイズに関しては、本来有償であるべき内容ですので、運良くヒントをもらえることはあるかもしれませんが、ご本人にお気持ちはあっても、おそらく社内のルールでサポートできないことがあるので、「お察しください。」ということなのだと思います。質問の仕方を変えてみるとか、自分で試してみたことを書いてみるとか、どこのフォーラムでもよくある基本ルールを守った上で、関係ないプラグインを停止し、他社製テーマをご利用の場合は、共通のものさしである Welcart Basic に変えてみるとか、問題の切り分けをできる限りした上で質問するようにしなくてはいけません。おそらく、初心者のうちはそんなことすら分からず、ただ勇気を振り絞って最初の投稿をしてしまうものだと思います。答え易いように整理して質問すれば、ひょっとしたら他のユーザーからもヒントをもらえるかもしれません。
追加の情報を書き込むつもりが、新たなトピックを立ててしまったりなんてことも見ていて普通にあることですし、気づいて焦っても削除できない!ってこともよく見かけます。そんな投稿を、何も言わずそっと整理してくださるのも、優しいキーマスターの方々なんです。イエローカードではないと思いますよ。(たぶん、ですけど・・・。)
ちなみに、このトピックに回答くださった、ikeda 様はちょうど1年ほど前、その頃プログラム未経験の私にフックを使えばなんとかできるかもしれないと勇気づけてくれた恩人です。あのとき諦めないで良かったと本当に感謝しています。偉そうに聞こえるかもしれませんが、私もド素人の一人ですので、これからもいっしょにがんばりましょう!
Alicia参加者moma 様
ご連絡ありがとうございました。
他の事業者様の使い方が聞けて勉強になりました。
私は、プログラムに初めて触れてからまだ1年ぐらいで、Welcart の事もまだまだ分からないことばかりです。ほぼ毎日フォーラムを読んで勉強させてもらってます。本業が別にあるので歩みは遅いですが、最近は、重大なエラー!で怒られることが減ってきたかなと思ってます。少しは成長してるのかもしれません。Alicia参加者moma 様
ご連絡ありがとうございます。
そうですね。仰るような理由で、私も当初は2つに分けていたんです。ただ、受注報告メールに届いた備考欄に記されていたオーダーの要求が厳しすぎて、こちらからお客様に連絡を取る必要が出たときに、受注用メールアドレスに届いたメールから直接返信ボタンから連絡したいと思うようになったことがきっかけでした。いちいち送信用に切り替えるのが面倒になったんです。送信用アドレスのなりすまし対策(SPFなど)含めて手間が掛かるようになりました。スタッフの中には何も配慮せず、そのまま返信してしまう者もいますし、そうなると教育にも手間がかかるようになって・・・。お客様ごとにどちらで連絡をとっていたか管理できなくなって、それならば一緒にしてしまえ!となったわけです。
そういう過程を経て、最終的に別件のトピックにあったように受注報告メールの reply-to も変更することになりました。今では、すっかり落ち着いています。
それにしても、フックが扱える方でよかったです。やってることは小さな事かもしれませんが毎日のストレスを考えると、やらないよりは、やった方が絶対よいと思えるカスタマイズです。
Alicia参加者rah-hy 様
こんにちは。
仰りたい内容は、必須項目にしたカスタムフィールドが、全角スペースだけの入力でバリデーションが効かず、そのままカートが進んでしまって困ったということかと思います。
考え方のヒントだけお伝えします。
どこのバリデーションかわかりませんが、カスタムメンバーフィールドということですので、例えば、カートのお客様情報から、発送・支払方法ページへの遷移途中でチェックをかけるのでしたら、usces_filter_customer_check というフックになるかと思います。ここに、仰っている「個別の番号」を、接頭辞や使用する数字、桁数を正規表現で表したものを設定して、条件をクリアできなければ、アラートメッセージを表示してカートを進めなくするといった方法が一般的かと思います。
フックも場所によって異なりますので、過去のトピックを検索すれば出てくると思います。
もし、もっと良い方法があれば、そちらも教えて頂けないでしょうか。
難易度が少し高くなるかもしれませんが、私は、項目を移動したときにリアルタイムでチェックできる、jQuery-Validation Engine で、各種入力フォームを覆っています。興味がおありでしたら、Google などで検索してみてください。
- この返信は9ヶ月前にAliciaが編集しました。
-
投稿者投稿