suitchocolat
投稿の際は下記の情報をお書き添えください。
-------------------------------------------
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)
症状を確認したブラウザ:
サーバー【重要】:(会社名、サービス名)
--------------------------------------------
フォーラムへの返信
-
投稿者投稿
-
suitchocolat参加者
大変恐れ入りますが自己解決しました。
YamatoNumber.class.php内の make_individual_cart( $cart_org )をカスタマイズしており、本番環境のみ、そのコードに誤りがありました。テスト環境
public function make_individual_cart( $cart_org ) { global $usces; $opt_shipping_charges = $usces->options['shipping_charge'];//送料設定の配列を取得 $individual_cart = array(); $normal_cart = array(); $reizou_cart = array(); $reitou_cart = array(); foreach ( $cart_org as $org ) { $is_individual = false; $post_id = (int) $org['post_id']; $quantity = (int) $org['quantity']; $product = wel_get_product( $post_id ); $is_individual = $product['itemIndividualSCharge']; if ( $is_individual ) { $org['quantity'] = 1; for ( $i = 0; $i < $quantity; $i++ ) { $individual_cart[] = array( $org ); } } else { $normal_cart[] = $org; } } if ( ! empty( $normal_cart ) ) { foreach ( $normal_cart as $org){ $post_id = (int) $org['post_id']; $product = wel_get_product( $post_id ); $item_shipping_charge_id = $product['itemShippingCharge']; foreach($opt_shipping_charges as $opt_shipping_charge) { if($item_shipping_charge_id == $opt_shipping_charge['id']) { switch ( $opt_shipping_charge['name']){ case '宅急便コンパクト(常温)': $reizou_cart[] = $org; break; case 'クール便': $reizou_cart[] = $org; break; case '宅急便(常温)': $reizou_cart[] = $org; break; case 'クール便(冷凍)'; $reitou_cart[] = $org; break; default: } break; } } } if ( ! empty( $reizou_cart ) ) { $individual_cart[] = $reizou_cart; } if ( ! empty( $reitou_cart ) ) { $individual_cart[] = $reitou_cart; } } return $individual_cart; }
本番環境
public function make_individual_cart( $cart_org ) { global $usces; $opt_shipping_charges = $usces->options['shipping_charge'];//送料設定の配列を取得 $individual_cart = array(); $normal_cart = array(); foreach ( $cart_org as $org ) { $is_individual = false; $post_id = (int) $org['post_id']; $quantity = (int) $org['quantity']; $product = wel_get_product( $post_id ); $is_individual = $product['itemIndividualSCharge']; if ( $is_individual ) { $org['quantity'] = 1; for ( $i = 0; $i < $quantity; $i++ ) { $individual_cart[] = array( $org ); } } else { $normal_cart[] = $org; } } if ( ! empty( $normal_cart ) ) { foreach ( $normal_cart as $org){ $post_id = (int) $org['post_id']; $product = wel_get_product( $post_id ); $item_shipping_charge_id = $product['itemShippingCharge']; foreach($opt_shipping_charges as $opt_shipping_charge) { if($item_shipping_charge_id == $opt_shipping_charge['id']) { switch ( $opt_shipping_charge['name']){ case '宅急便コンパクト(常温)': $reizou_cart = array($org); break; case 'クール便': $reizou_cart = array($org); break; case '宅急便(常温)': $reizou_cart = array($org); break; case 'クール便(冷凍)'; $reitou_cart = array($org); break; default: } break; } } } if ( ! empty( $reizou_cart ) ) { $individual_cart[] = $reizou_cart; } if ( ! empty( $reitou_cart ) ) { $individual_cart[] = $reitou_cart; } } return $individual_cart; }
当店では【常温】【冷蔵】【冷凍】の三温度帯の商品を扱っており、常温と冷蔵は同梱できるのですが、冷凍とその他の温度帯は同梱できず、伝票を2枚出力する必要があり、このようにカスタマイズしています。
プラグインのコードを直接編集するのは避けるべきと重々承知しているのですが、ここにフィルターフックが無かったので…
お騒がせして大変申し訳ありませんでした。
誠にありがとうございました。suitchocolat参加者度々失礼いたします。
調べを進めたところ、本番環境では$cartに入っている商品情報が1点のみになってしまっている事がわかりました。【調査方法】
※参考https://haniwaman.com/functions-value/
①下記を参照し、ワードプレスをデバックモードにしてエラーログを出力するように設定
②上記のカスタマイズコードを下記に変更し$cartの中身を調べた// WCEX Yamato NumberのCSV出力に発送区分反映 function csm_wcynb2_filter_outcsv_data( $ldata, $order_id, $data, $cart ) { ob_start(); var_dump( $cart ); $test = ob_get_contents(); ob_end_clean(); error_log( '処理前cart: ' . $test ); global $usces; -以下変更なし-
【実行結果】
テスト環境:[05-Jul-2024 05:32:52 UTC] 処理前cart: array(2) { [0]=> array(19) { ["cart_id"]=> string(5) "13451" ["order_id"]=> string(4) "8498" ["group_id"]=> string(1) "0" ["row_index"]=> string(1) "0" ["post_id"]=> string(5) "16794" ["item_code"]=> string(7) "lgs-001" ["item_name"]=> string(63) "商品A" ["cprice"]=> string(11) "20231106.00" ["sku_code"]=> string(9) "lgs-001-2" ["sku_name"]=> string(10) "2個入り" ["price"]=> string(6) "750.00" ["quantity"]=> string(1) "1" ["unit"]=> string(0) "" ["tax"]=> string(4) "0.00" ["destination_id"]=> string(1) "0" ["cart_serial"]=> string(0) "" ["sku"]=> string(9) "lgs-001-2" ["options"]=> array(0) { } ["advance"]=> array(0) { } } [1]=> array(19) { ["cart_id"]=> string(5) "13452" ["order_id"]=> string(4) "8498" ["group_id"]=> string(1) "0" ["row_index"]=> string(1) "1" ["post_id"]=> string(5) "15872" ["item_code"]=> string(7) "mon-012" ["item_name"]=> string(54) "商品B" ["cprice"]=> string(11) "20230515.00" ["sku_code"]=> string(7) "mon-012" ["sku_name"]=> string(0) "" ["price"]=> string(7) "2050.00" ["quantity"]=> string(1) "1" ["unit"]=> string(0) "" ["tax"]=> string(4) "0.00" ["destination_id"]=> string(1) "0" ["cart_serial"]=> string(0) "" ["sku"]=> string(7) "mon-012" ["options"]=> array(1) { ["お渡し用のお手提げ(無料)"]=> string(6) "不要" } ["advance"]=> array(0) { } } }
本番環境
[05-Jul-2024 05:32:55 UTC] 処理前cart: array(1) { [0]=> array(19) { ["cart_id"]=> string(5) "19057" ["order_id"]=> string(5) "11811" ["group_id"]=> string(1) "0" ["row_index"]=> string(1) "3" ["post_id"]=> string(5) "15872" ["item_code"]=> string(7) "mon-012" ["item_name"]=> string(54) "商品名B" ["cprice"]=> string(11) "20240419.00" ["sku_code"]=> string(7) "mon-012" ["sku_name"]=> string(0) "" ["price"]=> string(7) "2444.00" ["quantity"]=> string(1) "1" ["unit"]=> string(0) "" ["tax"]=> string(4) "0.00" ["destination_id"]=> string(1) "0" ["cart_serial"]=> string(0) "" ["sku"]=> string(7) "mon-012" ["options"]=> array(1) { ["お渡し用のお手提げYC"]=> string(6) "不要" } ["advance"]=> array(0) { } } }
$cart内に複数の商品が入るようにするにはどうすればいいのでしょうか?
何卒ご教示いただけますと幸いです。
よろしくお願いいたします。suitchocolat参加者urushi様
ご教示誠にありがとうございます。
確認すべきvalue値ですが、添付画像のように検証ツールでoption valueの値を見る、であっていますでしょうか?
option valueの値及び送料名は全て同一でした…
他にも何か思いつく点があれば何卒よろしくお願いいたします。Attachments:
You must be logged in to view attached files.suitchocolat参加者urushi様
ご返信下さり誠にありがとうございます。
送料名については、本番環境では10項目、テスト環境では8項目設定されており、本番環境の1~8項目目はテスト環境と同一です(テスト環境を本番環境から複製構築後、本番環境のみに送料設定を2つ追加しました)
配送名についても同様で、本番環境では8項目、テスト環境では5項目設定されています。
なお上記カスタマイズのコードに登場する送料名はいずれの環境にも同じ名前で設定されています。
テスト環境にも本番環境に追加した設定を追加してみるべきでしょうか?
suitchocolat参加者urushi様
早速のお返事誠にありがとうございます。
こちらのカスタマイズは、元々使用していたテーマ(ICONIC)に入っていたものではなく、外注で作成していただいたものですが、リニューアル前は問題なく動作していました。
何卒よろしくお願いいたします。
suitchocolat参加者お返事下さり誠にありがとうございます。
>「カスタムフィールド項目の値の中にHTMLタグやセミコロンが入力されており」とのことですが、やはりこちらが原因ではないかと思われます。
やはりここですよね…。エクセル以外のエディタでは開いたことがありませんでした。やってみます。
誠にありがとうございます。suitchocolat参加者ikeda様
早速お返事ありがとうございます。
・全項目CSVでは、列名に問題はありません
が、カスタムフィールド列内の値を見ると、ショートコードや商品説明の一部がメタキーとして入力されているケースがあります。(;;ショートコード;;のように)
・カスタムフィールドのプラグインは使用していません昨日投稿の後調べを進めたのですが、
「WP CSV Exporter」という別のプラグインから投稿データ全体を出力しようとすると、
出力するカスタムフィールド項目を選択する画面で、やはり項目名に値が入ってきていました。昨日phpbyAdminからデータベース内のpost_metaの不要なデータを削除しひとまず正常なcsv出力を得られるようにはなりました。今後再発した際にどのような条件で再発するか調べてみますが、ご助言をいただけますと嬉しいです。
suitchocolat参加者ご回答ありがとうございます。
特になにもしていないのですがresponse_OKになりましたので引き続き様子を見てみます…suitchocolat参加者早々にお返事下さり、誠にありがとうございます。
②について、GooglereCAPTCHAのステータスはresponse_ERRORとなっていました。恐れ入りますが、改善の方法をご教授いただけないでしょうか?
何卒よろしくお願いいたします。suitchocolat参加者度々失礼致します。
本件、先日ソニーペイメントサービス様にご報告したのですが、本日再度攻撃を受けているとご連絡いただき、決済サービスの一時停止を提案されています。極力回避したく、設定面で防げる可能性はないか改めてお尋ねしたく思います。
なお、Welcartバージョンは2.10.1、
GooglereCAPTCHA、クレジットカードセキュリティ対策は設定済みです■発生事象
4/13よりトークン処理件数の異常値を検知4/13 19657件
4/14 19321件
4/15 5000件以上(現時点)■ご質問
①最新バージョン2.10.1にて今回の攻撃が防げないのは想定の範囲内か
②Google reCAPTCHAにて今回の攻撃が防げないのは想定の範囲内か
③Welcart拡張機能のクレジットカードセキュリティ対策にて今回の攻撃が防げないのは想定の範囲内か、設定の値(カウント時間等)を変更すれば防げる可能性はあるか何卒ご回答よろしくお願いいたします。
suitchocolat参加者ご返信が遅くなり申し訳ありません。
ご確認、ご教授誠にありがとうございます。
ご指示いただいた内容を順次進めてまいります。
引き続き何卒よろしくお願いいたします。suitchocolat参加者ikeda様
ご対応、ご連絡誠にありがとうございます。
マニュアルを拝見して設定ができました。一点ご質問なのですが、現在私のGoogleアカウントではユニバーサルアナリティクスのプロパティとGA4プロパティを両方取得しているのですが、
ビューIDの選択肢として表示されるのはユニバーサルアナリティクスのプロパティのみでした。
今後ユニバーサルアナリティクスは計測停止しGA4に移行するかと思いますが、
こちら対応のご予定はあるのでしょうか?お手すきの際にご回答いただけますと幸いです。
何卒よろしくお願いいたします。suitchocolat参加者ikeda様
お返事下さり誠にありがとうございます。
全角で受け渡される点について、ご修正いただけるとの事嬉しいです。
他の点も承知いたしました。引き続き何卒よろしくお願いいたします。suitchocolat参加者furuta様
迅速なご回答誠にありがとうございます。
お忙しいところ恐縮ですが、ご対応をお待ちしています。suitchocolat参加者早速丁寧なお返事をありがとうございました。
安心しました。引き続き利用させていただきます。
何卒よろしくお願いいたします。 -
投稿者投稿