phper
投稿の際は下記の情報をお書き添えください。
-------------------------------------------
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)
利用している決済モジュール:
症状を確認したブラウザ:
サーバー【重要】:(会社名、サービス名)
--------------------------------------------
フォーラムへの返信
-
投稿者投稿
-
phper
参加者ありがとうございます。
1.9.37のバージョンでは記号が一切使用できなかったため報告いたしましたが、現行バージョンで使用できるのであればよかったです。
また、エラーについては商品コードが一番最初に入力する項目という事もあり、PCのモードが全角になっていることに気づかず入力を続けてしまう事があり、アラートが大変なことになるときが何度もございますのでご検討いただけますと幸いです。phper
参加者ローカル環境から有料プラグインを更新できないのですが、ドメインでブロックをかけてますでしょうか?
phper
参加者すみません、こちらの件私の設定ミスでした。
こちらで削除できないため、削除していただけると幸いです。phper
参加者デモでwelcart2.3.4にアップデートしたところ、まだ症状が改善されませんでした。
acfのpatchは使用しております。phper
参加者決済など多くの箇所でusces_orderのorder_cartからシリアルデータを取得しているようですが、過去のコードとの兼ね合いで残さざるを得ないといった状況でしょうか。
先ほど管理画面から商品追加を行ってみたところusces_orderのorder_cartカラムにはデータが登録されませんでしたので、現状フロントの処理でしか使用されていないようなので、私のカスタムでは同期はしなくてもよさそうです。とはいえデータの参照先が複数あると、思わぬ不具合の原因にもなり得るかと思いますので、
いずれ統合されたほうが良いような気もします。ご返信ありがとうございました。
-
この返信は3年前に
phperが編集しました。
phper
参加者ありがとうございます。
意図せず上書きしてしまう可能性がありますので、実装いただけると助かります。
よろしくお願いいたします。phper
参加者”使用していますが、複雑な部分になります。”
どの部分で使用されていますか?なぜわざわざシリアル化したデータを残しているのですか?カスタマイズを大量に行っており、過去にアップデートでフックポイントを幾度となく削除されておりますので、アップデートは控えております。
phper
参加者ありがとうございます。
2つ目については引き続き追加を要望いたしますので、
ご検討をお願いいたします。phper
参加者すみません、もしかすると下記のカスタマイズのときに自分で追加したのかもしれません。
下記についてご対応いただいている場合、なんというフックが追加されたかわかりますでしょうか。phper
参加者https://blog.tokumaru.org/2015/05/blog-post.html
上記の徳丸先生の記事をご参照いただくとどうしてそのような事象が起きるのかが理解できると思います。
そのうえでwelcartを確認すると、トランザクション処理を行っているコードを確認できないので、
当然記事中のような現象が起きることになります。
導入できるようであれば、ぜひ導入していただきたいですね。phper
参加者コードを見て疑問点が4つほどあったので追記です。
usces_action_reg_orderdata()の中で下記のようになっていますが、
if( 100 < $olimit ){ $usces->set_order_meta_value('dec_order_id', uniqid(), $order_id); }else{ $usces->set_order_meta_value('dec_order_id', $dec_order_id, $order_id); }100桁を超えた場合に、uniqid()で生成した値を直接登録してしまっているため下記のフックでのカスタマイズが及ばなくなります。
$dec_order_id = apply_filters( 'usces_filter_dec_order_id_prefix', $options['system']['dec_orderID_prefix'], $args ) . apply_filters( 'usces_filter_dec_order_id', $dec_order_id, $args );そもそも100桁なんていうオーダーIDは非現実的であるため、桁数の登録時点で制限をかけるべきだと思います。
そうすればこのような冗長的なコードを書かなくてもよいので・・。あと、下記のコードですが、while内のコードの可読性が悪く最初何をやっているのかとおもいましたが、usces_get_key()で仮にfalse判定を受けた場合、次の処理に進んでしまいますが大丈夫でしょうか。例えば引数が0桁とか空文字とかの場合。
while( $ukey = usces_get_key( $options['system']['dec_orderID_digit'] ) ){ $ores = $wpdb->get_var($wpdb->prepare("SELECT meta_key FROM $otable WHERE meta_key = %s AND meta_value = %s LIMIT 1", 'dec_order_id', $ukey)); if( !$ores || 100 < $olimit ) break; $olimit++; }上記で重複をせっかくチェックしているのであれば、100桁オーバーの際にuniqid()で直接値を登録せずに、uniqid()で生成されたdec_order_idについてもチェックが必要であると思います。
お分かりでしょうが、uniqid()は完全なユニークを生成するものではないので。少々荒っぽい物言いになってしまったかもしれませんが、ご確認とご検討をお願いします。
phper
参加者すみません、変更履歴という表記だったので分からなかったです。
了解です。phper
参加者一方、wc_get_order()というメソッドが存在するようですが、
こちらはajax通信時に関数が使用できず少々不便ですが、難しいのでしょうか。phper
参加者ありがとうございます。
phper
参加者Welcartには商品画像という独自のフィールドが用意されているため、アイキャッチをあえて制御しているのではないですか?
既存のテーマ等との兼ね合いもあると思いますので、この仕様を変更することは不可能ではないでしょうか。”今回の不具合自体はテーマなどから修正・回避可能なものですが、”
とご自身で書かれているように、独自にアイキャッチ機能を使用されたいのであればその記述をfunctions.phpに記述すればよいという話ではないでしょうか? -
この返信は3年前に
-
投稿者投稿
PAGE TOP