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
参加者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年、 1ヶ月前に
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’] を書き換えてなかったでしょうか?
いずれにしましても、バグトラッカーを見ていますと、公式で対応中らしい動きがありますので、しばらく待ってみるのもいいかもしれません。
-
この返信は1年、 1ヶ月前に
-
投稿者投稿