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参加者
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; }
- この返信は11ヶ月前に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. 様
(管理者をログアウトして)お客様として(ご自分の管理しているその)サイトに訪れてください。
Alicia参加者eno.k. 様
ごめんなさい。お客様としてサイトに訪れてください。
Alicia参加者eno.k. 様
こんにちは。
フロント側へお回りください。Alicia参加者Rights 様
ご確認いただきありがとうございました。
ブラウザのコンソールでJavascriptのエラーは出ていますか?Alicia参加者Rights 様
こんにちは。
問題の切り分けが必要かと思います。
おそらくJava でエラーが発生しています。
1.セキュリティ系のプラグインを一旦全部停止してみる。
2.ブラウザの設定を確認する。ブラウザを替えてみる。
3.サーバーのWAFを停止して15分くらい待つ。後半のご質問は、別件ですか?本件と何か関係ありますか?
別件ならば、新しいトピックを立てられることをお勧めします。Alicia参加者YS-nishida 様
こんにちは。
マニュアルの読み方ですが、送料固定
通常は一つの配送方法に対して一つの送料を指定して固定するのが一般的です。
しかし送料が複数有り、同じ配送方法でも商品ごとに送料を変える必要がある場合は、「送料を固定しない」を選択します。これにより、商品登録時に送料を選択できるようになります。
(送料を固定した場合、商品情報編集での送料選択は無視されます)これによると、
送料固定→送料を固定しない
ではなく、固定すれば、お望みの結果が得られると思います。一度試してみてください。
Alicia参加者yossiy0815 様
こんにちは。
公式で対応中とのことですので、アップデートを待たれるのがよいと思います。
それまでは、reCAPTCHA v3 を停止すれば受注できるはずです。Alicia参加者ikeda 様
お世話になっております。
こちら、原因がわかりました。おそらく解決したのではないかと思います。
Welcart 2.9.11 アップデートのバグの原因を調べているときにプラグインを外したり、カスタマイズをいじったときにフックの優先度を変更したのを忘れていました。ついでにこのタイミングで wpautop の無効化を解除してしまったこともあり、すっかり嵌まってしまいました。
お騒がせして申し訳ありませんでした。取り急ぎご報告まで。Alicia参加者ikeda 様
この件ですが、実は私も他に改行がされなくなった箇所がありますが、敢えて報告を控えております。
といいますのも、HTML形式メールへのカスタマイズが激しすぎて、最近の修正に追いついていないからです。また、HTML形式をよく利用されている方は、そもそも wpautop を嫌う傾向にあるのではないかと思います。
最近、別件(header に、Reply-to など)もあるので、emails.php への修正が盛んになっています。この部分は、毎日WEB 様との調整も必要とのことですので、HTML形式がまだ落ち着いていません。
加えて、wpautop を嫌って無効化していたり、Advanced Editor Tools を使っている場合のこの設定項目などの影響もあり、Welcart Shop メール設定 > のヘッダやフッタに含まれる、インラインの styleタグ がpタグで死んでしまうなど、wpautop の影響は、広範囲に及んでいるのではないかと思います。emails.php には、フックを使って原型をとどめていないほどカスタマイズが入っておりまして、正直なところ、Welcart 側の修正が落ち着くまではお手上げ状態というのが本音です。
まずは、特に変更を加えていない方の環境で落ち着いたところで、カスタマイズの調整をした方が良いのかもしれません。wpautop の無効化をしたこと自体を忘れている場合もあると思いますので、このあたりの確認も必要かと考えております。Alicia参加者ikeda 様
いつもお世話になっております。
Welcart 2.9.13 のアップデートで「メールアドレス確認のお願い」に問題なく改行が入ったことを確認いたしました。
この度は、ご対応ありがとうございました。Alicia参加者mtm 様
こんにちは。
Welcart専用の拡張プラグインの「Friendly Functions for Welcart(MAINICHI WEB様)」をご利用でしょうか。同様の機能があったかと思います。今回の Welcart 2.9.11 でのアップデートで競合したのかもしれませんね。
Friendly Functions for Welcart は、確かここの部分は、HTML形式の場合にバグが存在していたかと思います。(勘違いでしたら申し訳ありません。)ご利用でなかったとしたら、フィルターフックusces_send_ordermail_para_to_managerで$order_para[‘headers’] を書き換えてなかったでしょうか?
いずれにしましても、バグトラッカーを見ていますと、公式で対応中らしい動きがありますので、しばらく待ってみるのもいいかもしれません。
Alicia参加者furuta 様
よくある質問への追記を確認しました。ありがとうございました。
本件別トピックで継続させていただきますが、上記の私の記載に訂正がみつかりましたので、その分だけ、このままここに記載させてください。訂正後
「お客様情報ページ」
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 で該当決済サービスを使っていないので、調べられませんでした。「内容確認ページ」
wc_templates/cart/wc_confirm_page.php
別トピックにて質問しますが、このタグは不明です。TCD テーマの方は、毎度の事ながらメンテがされていませんので
wc_templates/cart/wc_delivery_page.php や
wc_templates/member/wc_new_member_page.php は、子テーマに該当タグを入れたことで、私の環境では通過できました。これでしばらく様子を見ようと思います。
Alicia参加者「メールアドレス確認のお願い」の自動送信メールも改行されてないようです。
ご確認よろしくお願いいたします。
——————————————-
テスト環境
WordPress のバージョン: 6.4.3
Welcart のバージョン: 2.9.12
PHP のバージョン: 8.0.30
Welcart専用の拡張プラグインとバージョン: WCEX Multi Price 1.3.2, WCEX SKU Select 1.4.5
ご利用の親テーマとバージョン : Welcart Basic 1.8.2
ご利用の子テーマとバージョン : なし
症状を確認したブラウザ: Chrome
サーバー【重要】:Xserver シン・レンタルサーバー ベーシック
——————————————– -
投稿者投稿