Alicia
投稿の際は下記の情報をお書き添えください。
-------------------------------------------
WordPress のバージョン:(例 6.8.2)
Welcart のバージョン:(例 2.11.20)
PHP のバージョン:(例 8.2)
Welcart専用の拡張プラグインとバージョン:(例 DL Seller 3.5.8、SKU Select 1.4.7)
ご利用の親テーマとバージョン :(例 Welcart Basic 1.8.7)
ご利用の子テーマとバージョン :(例 Welcart Beldad 1.5.5)
利用している決済モジュール:
症状を確認したブラウザ:
サーバー【重要】:(会社名、サービス名)
--------------------------------------------
フォーラムへの返信
-
投稿者投稿
-
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 などで検索してみてください。
-
この返信は1年、 5ヶ月前に
Aliciaが編集しました。
Alicia
参加者moma 様
こんにちは。
Welcart 2.9.14 ~
From は、送信元メールアドレス[ sender mail ] ( 新旧変わらず )
Reply-to は、受注用メールアドレス[ order mail ] (新設)
Reply-name は、サイトのタイトル [ blog name ] ( WordPress 設定 > 一般 )(新設)
Return-path は、エラーメールアドレス[ error mail ] (従来は、送信元メールアドレス)にメールの種類にかかわらず統一されました。
購入者宛メールからお客様が返信してくださる際、以前は【送信元メールアドレス】に届いていた
これまで、Reply-to はデフォルトでは指定されていませんでしたので、その場合には、一般的なメーラーでは、返信ボタンを押すと返信者が特に指定しない限り、”From:” フィールドに指定されているメールボックスに返信される仕様です。
【受注用メールアドレス】に届くようになりました。
つまり、送信元メールアドレス以外に返信して欲しい場合に、Reply-to を指定する必要があるということで、送信元メールアドレスのままでよければ、Reply-to を指定しなければよいということになります。(ちなみに、Return-path は、メールが届かなかったときに返すメールアドレスという意味で、通常の返信希望メールアドレスを指すものではありません。)
余談になりますが、私の場合は、お客様が返信なさるときにどのメールアドレスに返信するのかをあれこれ意識させることはしたくないので、受信用メールアドレスと送信元メールアドレスは同じにしています。「来たメールにそのまま返信していただく」のが迷わせないのではないかと考えています。 ましてや、返信ボタンを押したときに no-reply@ にして、質問メールは、お問い合わせフォーム限定にしてしまうサイトは、お客様本位ではないので好きではありません。
また、お客様が「連絡先」などに登録されるようなことがあったときにも、どちらを登録されるかわからないことや、返信ボタンを押して送信されるとも限らないことが理由です。元々、1つに統一しておけばそういった問題から開放されます。
また、受信用と送信元アドレスを分けたとしても、お客様のメーラーの操作次第によって、どちらにも届く可能性がありますので、結局のところ両方注意して見ておかなければならないことも大きな理由です。もちろん、考え方は人それぞれだと思います。
規模やスタッフの役割分担などの理由があって、受信用と送信元アドレスを分ける必要があることもあるかと思いますので、それを否定するわけではありません。(個人的には、返信をいただく機会が多くアドレスの使い分けをしていたので、以前の方が便利でした…)
今回、仕様変更になりましたので、元に戻すにはカスタマイズする必要があります。上記の説明をお読み頂ければ、Reply-to の指定を消去するか、送信元メールアドレスをReply-to に指定するかの対応が必要ということがお分かりいただけるかと思います。
フックが扱えるようであればそれが一番良いとは思いますが、扱えない方もいらっしゃるので、今回は、ikeda 様が仰っていることに沿った内容を補足する形になりますが、代替方法としてノーコードでも Reply-to を変更できる方法をお伝えしたいと思います。
残念ながら、ノーコードで Reply-to の指定を消去することはできません。残るは、送信元メールアドレスを Reply-to に設定する方法です。まず、 マニュアル を読みますと、
受注用メールアドレス(必須)
注文内容を受け取るためのメールアドレスを入力します。カンマ区切りで複数指定できます。となっています。
そして、こちらはマニュアルには書かれていないのですが、今回のアップデートでは、コードを読むかぎり Reply-to に指定されるのは、「 1番目の受注用メールアドレス[ first_order_mail ] 」 のようです。
つまり、Welcart Shop > 基本設定 受注用メールアドレス の
「 1番目 」 に 「送信元メールアドレス」を追加、そして「 , 」(カンマ)に続けて、
「 2番目 」 にこれまでの「受信用メールアドレス」を指定するこれだけで、Reply-to に「送信元メールアドレス」 がノーコードで設定されることになります。
デメリットですが、当然ながら、両方のメールアドレスに受注報告メールや各種管理メールのBCCメールといった自動送信メールが届くわけですが、こちらは、「送信元メールアドレス」に届いたメーラーの受信設定で、「送信元メールアドレス」でフィルタリングしてフォルダ分けを設定しておけば、これらの自動送信メールとお客様からの返信メールをフォルダで区別することが可能です。あとはこれらの自動送信メールが不要ならば、まとめて消去するだけです。
私のように、元々両方同じにされている方は、今回のアップデートの影響はほとんどないと思います。他にも、フックが扱えないという方がいらっしゃったら、試してみてください。私は、想像だけで実験していませんので、もし試された方がいらっしゃったら、このフォーラムにて共有いただけますと嬉しいです。
Alicia
参加者kitagawa 様
mainichi web様お世話になっております。動かなくなっておりました、Reply-to へのカスタマイズにつきまして、遅くなりましたがその後の顛末です。
Welcart 2.9.10 → 2.9.14 まで emails.php をコンペアして確認したところ、私のところでは、フィルターフックの usces_send_ordermail_para_to_manager を利用したカスタマイズへの修正で問題なく動くようになりました。FFWでは、usces_filter_phpmailer_init で最終的に Fires after PHPMailer is initialized.部分の phpmailer_init への修正もされているようですが、自分だけでカスタマイズを管理できるのでそこまでの修正は不要でした。
自分のカスタマイズを停止して、FFWにて該当の機能を稼働させても、HTML形式でうまく機能しているのが確認できました。私としましては、これにて解決としていただいて構いません。この度は、大変お世話になりありがとうございました。
Alicia
参加者furuta 様
ありがとうございます。痛み入ります。
急ぎません。
よろしくお願いいたします。Alicia
参加者kitagawa 様
ご丁寧に連絡いただきましてありがとうございます。
私のところは、Welcart 2.9.14 にしても元の様には動きませんでした。2.9.11の時に変わった影響を受けているのだと思います。
やはり、FFWと同じように自分のカスタマイズを見直す必要があるのでしょう。私は、HTML形式ですので、元々FFWの機能は使えませんでした。今回のFFWのアップデートでは使えるようになっているのだと思います。両者出揃ったところで、変更後のemails.php 全体をコンペアして解読しないといけませんね。フックを追加してくださったとのこと。おそらくこれで以前より簡単になったのかと期待しています。私は、コーディング経験が浅く、時間が掛かりますのでしばらくはこのままでいくと思います。
今、まだ確定申告で時間が取れませんので、改めて落ち着いてから取り組むこととします。
この度はご案内ありがとうございました。Alicia
参加者mainichi web 様
こんなところでお話しできるとは思っていませんでした。
お世話になっております。ご丁寧にありがとうございます。以前のバージョンでは、
if(!is_array($order_para['headers'])){ $order_para['headers'] = array();}
で元々含まれていた、”Content-Type: text/html” も初期化されて消えてしまっていましたので、HTML形式の人には使えてなかったと思います。
今回、調整事項があるとのことですので、Welcart 2.9.14 が出てからになりますが、また後日確認させていただきます。 この度はありがとうございました。
Alicia
参加者tani.on-gaeshi.com 様
こんにちは。
気になっていたものの、時間が取れなくてすっかり遅くなってしまいました。
もう、これを見ることはないかもですが、他の方が参考にされるかもしれませんのでメモしておきます。商品合計3900円以下の場合に送料を一律150円引きにしたいのですが、
オプションで商品毎にギフトラッピングの選択が出来るようにしており、
一商品でもオプション(ギフトラッピング)を選択した場合は、例外としたいです。そのお気持ちすごくよくわかります。特に、「〇〇円以下」の「以下」ってところが・・・。送料で稼ぎたいわけじゃないので、できるだけ安くしたいけど・・・。
ギフトラッピングにすると、包装用の箱の中に更に化粧箱が入るので、包装用の箱のサイズが変わっちゃうんですよね。たぶん。だから除外・・・。素人の私は、たまにしかプログラムを書かないので、すぐに忘れてしまいます。なので、今回お手伝いさせてもらいました。ですが、最近プログラムというものを初めて書き始めたばかりですので、何の保証もできません。しっかりバックアップを取ってからにしてくださいね。
WCEX Multi Price をご利用ですので、ギフトラッピングの箱代などは、それで徴収されるのだと思います。私の場合、オプションがとても多くなってしまったので、色んな独自のルールがあるために、オプションの先頭8文字をコード化して、フロント側では見えないように消去しています。その為、そのコードで厳格に引っ掛けてゴニョゴニョと色々しているのですが、今回はわかりやすく、「ギフトラッピング」という文字列を含んでいれば、という条件にしました。簡素化したせいで予期せぬ動きをするかもしれませんので、気になったらご自身で変更してください。
Welcart 本体の送料無料の機能も、せっかくなので残しておきます。【注意事項】
PHP8.0 ~ 新設された str_contains() を使っています。
今、お使いのPHP のバージョン:7.4.30
では、機能しません。
PHPを更新して、8.0にする(8.1以上は、他のプラグインなどの対応状況がわからないうちは、やめておいた方がいいと思います。)か、ご都合が悪いようでしたら strpos() や strstr() に変更するなどしてください。add_filter( 'usces_filter_set_cart_fees_shipping_charge', 'my_filter_set_cart_fees_shipping_charge', 10 ); function my_filter_set_cart_fees_shipping_charge(){ // 変数の一部は、フックから取っても構いません。 global $usces, $usces_entries; $carts = $usces->cart->get_cart(); $entries = $usces->cart->get_entry(); $total_items_price = $usces->get_total_price(); $entries['order']['total_items_price'] = $total_items_price; // 一応、Welcart 本体の送料無料条件 は機能するように残しました if( empty( $usces->options['postage_privilege'] ) || $total_items_price < $usces->options['postage_privilege'] ) { $shipping_charge = $usces->getShippingCharge( $entries['delivery']['pref'], $carts, $entries ); $carts = $usces->cart->get_cart(); //カートの中身を抽出する $counter = 0;// カウンター初期化 foreach($carts as $cart_key => $cart_row){ //カートの中身からカートの行番号となるKeyと内容を1行ごと(1つの注文ごと)に抽出してループする $opt = $carts{"$cart_key"}["options"]; //1つ目の注文からオプションデータのみ抽出する foreach($opt as $opt_key => $value){ //オプションデータから共通オプションのKeyと中身を抽出してループする $wrapping_name = 'ギフトラッピング';// ← ← ← ← ← ← ← ここに、除外したいオプションの任意の文字列を入力する if( str_contains( urldecode($value), $wrapping_name)){ // オプションのセレクト値に $wrapping_name が含まれる場合 (注 str_contains PHP 8.0~) $counter ++;// 1ループごとにカウントしていく } } } // カウンターが0のまま(ギフトラッピングがなかった)、且つ 商品合計 3,900円以下だったら if( $counter <= 0 && $total_items_price <= 3900){ $shipping_charge -= 150; } } else { $shipping_charge = 0;// Welcart 本体で送料無料の条件を満たした場合 } return $shipping_charge; }
-
この返信は1年、 6ヶ月前に
Aliciaが編集しました。
Alicia
参加者furuta 様
Welcart 2.9.11 でのフックの追加を確認しました。ありがとうございました。
別件の方で手間取りまして、ご連絡が遅くなりました。申し訳ありません。トピ主様がまだ見ておられるかわかりませんが、他に参考にされる方がいらっしゃるかもしれませんので、やったことのメモを残しておくことにしました。
【前提】
次の項目に、フィールドキー company を設定しています
・カスタム・カスタマーフィールド
・カスタム・デリバリーフィールド
・カスタム・メンバーフィールド【今回使用したフック】
・usces_filter_pdf_customer_name (今回新設 購入者の個人名にusces_filters_pdf_person_honor2を連結)
・usces_filter_pdf_shipping_name (今回新設 配送先の個人名にusces_filters_pdf_shipping_person_honorを連結)
・usces_filter_pdf_contact_person (最近追加 先頭部分の「ご担当者:」を非表示にして、usces_filters_pdf_person_honor2 と usces_filters_pdf_shipping_person_honor をそれぞれ連結)
・usces_filter_pdf_customer_company (会社名にusces_filters_pdf_company_honor2を連結)
・usces_filters_pdf_person_honor (元の位置の敬称を非表示)
・usces_filters_pdf_company_honor (元の位置の敬称を非表示)
・useces_filter_order_pdfheader_fontsize(宛名の大きさ調整)【フックの中に勝手に追加した独自のフック】(本体のアップデートでも消えることはありません。)
・usces_filters_pdf_person_honor2 (購入者の個人名の右隣に新しい敬称を追加)
・usces_filters_pdf_shipping_person_honor (配送先の個人名の右隣に新しい敬称を追加)
・usces_filters_pdf_company_honor2 (会社名の右隣に新しい敬称を追加)【実際に作ってみて・・・】
最近追加されました、usces_filter_pdf_contact_person の納品書の条件分岐が複雑でしたが、お陰様でなんとかやり切りました。Welcart本体が苦労されて作り込まれていたのが印象的でした。リファレンスにありましたように、両方非表示にするだけなら簡単だったのですが、購入者と配送先の両方が同じフィルターフックでしたので、これを分岐するために少しトリッキーな仕組みが必要でした。【今後期待されるフック】
・usces_filter_pdf_delivery_company ?
盲点だったのが、これです。現状ですと、配送先の会社名の入力値を一時的に変更して、「御中」をくっつけて登録し直して、PDFを出力してからまた元に戻すのが一番早いかもしれません。担当者名を併記する場合であれば、現状のまま会社名の右隣に「御中」が表示できなくても問題ないので、あまり困らないと言えば困らないといったところです。今回、宛名周りの見栄えをどうにかしたいということでチャレンジしましたが、重要度は低めかもしれません。強力なカスタマイズ機能を備えた Welcart で現状どこまでできるか試してみました。医療関係の敬称は、ちょっとマニアックなので、丁度良いと思いまして使ってみました。
お忙しいところ無理を言ってフックを作っていただきましたので、お礼を兼ねてご報告いたします。結果は、サンプルをご用意しましたのでご覧下さい。
この度は、誠にありがとうございました。Attachments:
You must be logged in to view attached files.Alicia
参加者eno.k. 様
(管理者をログアウトして)お客様として(ご自分の管理しているその)サイトに訪れてください。
-
この返信は1年、 5ヶ月前に
-
投稿者投稿