受注明細リスト出力でCSVダウンロード出来ない
タグ: 受注リスト 受注検索
-
投稿者投稿
-
2017年11月2日 12:48 PM #84474uchinoko参加者
WordPress のバージョン:4.8.3
Welcart のバージョン:1.9.5
症状を確認したブラウザ:Google Chrome とIE11
サーバー(会社名、サービス名):弊社サーバー
SSLの利用: ありいつもお世話になります。
ダッシュボード内のWelcart Management
受注リストへ進み、
操作フィールド表示をクリックし、
受注検索で、「を含む」で、検索開始すると、
ブラウザ上はリスト表示されますが、
受注明細リスト出力でCSVをダウンロードすると、
タイトルのみでデータ部分が空になっています。受注検索で、「を含む」以外の「に等しい」などの条件は、
問題無くCSVデータがダウンロード出来ます。数日前までは問題ありませんでした。
原因や対策方法をご教示お願いいたします。
2017年11月2日 2:10 PM #84476cfg-fin参加者WordPress のバージョン:4.8.3
Welcart のバージョン:1.9.5
症状を確認したブラウザ:Google Chrome 60
サーバー:さくらのレンタルサーバ スタンダード
SSLの利用: あり———————————
お世話になります
同じ現象です
受注リストを「を含む」にて検索後
ブラウザ上では絞り込まれたリストが表示されますが
ダウンロードされたCSVを見るとタイトル行以外出力されません先の方のように「に等しい」での絞り込み後のリストはちゃんと出力されます
また検索せずに受注リスト全体のCSVもちゃんと出力されていますシステム設定の拡張機能にて新しいデータリストの受注リストを無効にすると
「を含む」で絞り込んだCSVでも出力されました当面 旧受注リストで対応します
お忙しい中恐れ入りますが 原因・対策等 よろしくお願いいたします
2017年11月2日 2:28 PM #84477nglife参加者uchinokoさんと全く同様の現象が起きております。
恐らく「新型受注リスト」のみの問題で特に「(LIKE検索ベースの)検索条件を指定した際」に起こるようです。10月31日(火)前後にWPのコアファイル(自動)アップデートがあったようで、
/wp-includes/wp-db.php
(=$wpdb)のprepare()関数が仕様変更されているようでした。第二引数以降に「%」が含まれていると一時的にハッシュ値で置き換えられるようになったようです。また、そのハッシュ値は「query()」を通る際に元の「%」に戻されるようです。恐らくこれによるものと思います。
同ファイルに
1. placeholder_escape()/ハッシュ値生成
2. add_placeholder_escape()/ハッシュ値で「%」を置き換え
3. remove_placeholder_escape()/ハッシュ値を「%」に戻すの関数が追加されておりました。
※それぞれ「WP:4.8.3」からの追加のようですが、私含めそれ以前のWPを使用されている方でもコアファイル自動アップデートが適用されるとこれらの更新が適用されてしまいます。$wpdb->prepare()が呼ばれると、
→ 2. add_placeholder_escape()
→ 1. placeholder_escape()の順に内部でコールされ、1. の途中で3. がフックに登録されるようです↓
add_filter( 'query', array( $this, 'remove_placeholder_escape' ), 0 );
ただ、リストDL時には$wpdb->prepare()が呼ばれていないためにこの連鎖が出来ていないようでした。
Welcartの新型受注リスト用クラス
/wp-content/plugins/usc-e-shop/classes/orderList2.class.phpの仕様として「$searchWhere」や「$searchHaving」にクエリ文を格納し、リストDL時にはこの変数からクエリ文を復帰していると思います。ただこの場合、各変数にはハッシュ値を含むクエリ文が格納されてしまっているのとprepare()がコールされないことから3. のフック登録が行われずハッシュ値を元に戻せていないままリストのデータ取得クエリが発行されてしまっているのだと思います。また、クエリ文(構文)としては正常なのでエラーは出ずにデータ件数が0になってしまうと思われます。
私の調べた範囲では以上のような推測となりますが早期ご対応をいただけると助かります。
どうぞよろしくお願いいたします。
- この返信は7年前にnglifeが編集しました。
2017年11月2日 6:32 PM #84481nanbuキーマスターこんにちは
情報ありがとうございます。
nglifeさんが仰います通り、WordPressのサニタイジングの仕様が変わったためかと思われます。これによって以下の不具合を確認いたしました。- キーワード検索を行った場合、ページナビ、ソートを行うと検索結果が0になってしまう。
- キーワード検索を行った場合、CSVの出力件数が0になってしまう。
急を要する方は、これを回避するために以下の応急処置が考えられます。
- この症状は、新受注リストで起こっております。旧リストに切り替えていただくことで、とりあえずCSV出力等は行えるようです。
- WordPressを4.8.2にダウングレードしていただく。
【Welcartの今後の対応】
かなり修正箇所が多いため、今回の仕様に完璧に沿った処置には時間がかかりそうです。ただ、この不便な状況から少しでも早く解放されるために、Welcartでも応急処置を取ろうと考えております。できるだけ早く修正いたしますので、修正版がリリースされるまで今しばらくお待ちいただきたいと思います。なお、Welcartの拡張プラグインでも同じような症状が出ております。こちらもあわせてお待ちいただきたいと思います。
何卒よろしくお願いいたします。
2017年11月3日 10:57 AM #84489Welcartキーマスターお待たせいたしました。修正が完了しました。
1.9.6にアップグレードしていただけたらと思います。2017年11月6日 8:58 PM #84509nglife参加者nanbuさん
Welcartさん早々のご対応誠にありがとうございました。
受注データが正常に取得できているのを確認できました。1.9.6のコード(本件の関係箇所)を拝見させて頂きましたが例えば
/usc-e-shop/classes/orderList2.class.phpの379行目
$this->placeholder_escape = $wpdb->placeholder_escape();
のように最新のメソッドをコールしている箇所につきましては、念のため後方互換を取られた方がよいのかなとも思いました↓if( method_exists($wpdb, 'placeholder_escape') ){ $this->placeholder_escape = $wpdb->placeholder_escape(); }
何にせよ迅速なご対応厚く御礼申し上げます。
今後ともどうぞよろしくお願いいたします。 -
投稿者投稿
- このトピックに返信するにはログインが必要です。