Alicia
投稿の際は下記の情報をお書き添えください。
-------------------------------------------
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)
利用している決済モジュール:
症状を確認したブラウザ:
サーバー【重要】:(会社名、サービス名)
--------------------------------------------
フォーラムへの返信
-
投稿者投稿
-
Alicia
参加者usces_filter_incart_check が WCEX SKU Select に対して効かないので、現状では、js に逃がすしかないのかもしれません。
一応、Welcart Basic では、動作確認済みです。
/** * SKU Select「選択してください」バリデーション */ add_action( 'usces_action_inCart_js_check', 'my_custom_sku_select_validation' ); function my_custom_sku_select_validation( $post_id ) { ?> (function($) { if (!$) return; var $skuSelects = $('.sku_select'); $skuSelects.each(function() { var $this = $(this); var selectedText = $this.find('option:selected').text(); if (selectedText.indexOf('選択してください') !== -1) { var labelText = ""; var $dl = $this.closest('dl.item-sku'); if ($dl.length > 0) { labelText = $dl.find('dt').text(); } else { labelText = "項目"; } labelText = $.trim(labelText).replace(/[::*\*]|\n|\r/g, ''); mes += " 【" + labelText + "】 を選択してください。\n"; } }); })(jQuery); <?php }-
この返信は4週前に
Aliciaが編集しました。
Alicia
参加者ak 様
こんにちは。
$mail_data = $usces->options['mail_data'];$mail_data = usces_mail_data();で取得できると思います。
Alicia
参加者ayazaki 様
その後、判明したのですが、usces_filter_incart_check は、WCEX SKU Select を使って「お選びください」を作っても、おそらく機能しません。
詳しくは、関連トピック usces_filter_incart_checkで返すエラーが表示されない(続)をご確認ください。
Alicia
参加者yskysmr 様
お忙しいところ、ご回答いただきましてありがとうございました。リファレンスの方もご負担になってしまい申し訳ありません。感謝しかありません。
ご回答いただきました、
urldecode()の件は、デフォルトのメッセージすべてに修正を加えます。ありがとうございます。そして
このとき、選択した(エラーメッセージを出したい)SKUが最初のSKUに置き換わってしまうため、エラーメッセージも最初のSKUのものを表示しようとしているのです。
を読ませてもらったとき、自分が感じていた違和感はこれだったのだと妙に腑に落ちました。
私は、このような排他制御カスタマイズを試みるとき、第一段階の
incart_checkで弾いて、その後のお客様情報ページでログインされたお客様に関しては、過去の購入履歴のSKUをすべてチェックして、最終的にdelivery_checkでも弾くことにしています。
ですので、現状では、SKU Select で見栄えを優先する方向にしようかなと考えています。incart_checkでの SKU Select を使った排他制御は、当面の間、お蔵入りにします。SKUに関しましては、
['size']['weight']['pict_id']など今後の Welcart の発展を期待させるものが予約されており、ワクワクしております。今後ともよろしくお願いいたします。このトピックは、クローズでお願いします。
この度は、お世話になり、誠にありがとうございました。
Alicia
参加者yskysmr 様
いつも大変お世話になりありがとうございます。
また、この度は丁寧なリファレンスまで作成いただきまして誠にありがとうございました。お陰様で、
urldecode($sku)で試しましたところ、(:)コロンは、ちゃんとメッセージが表示できるようになりました。ありがとうございます。usces_filter_incart_checkでは、過去にWelcart 本体にデフォルトで存在する、在庫チェックやオプションチェックなどの $mes にもカスタマイズをしておりまして、エラーメッセージを追加( $mes .= )しただけでなく、元々の$mesを変更するために初期化( $mes = array(); )からスタートして、元々のコードをなぞるように書いて部分的にカスタマイズしていました。この場合、(:)コロンを使う場合、他の $mes も変更した方がよろしいのでしょうか?
例
デフォルトで存在する、在庫チェックのエラーメッセージ
$mes[ $post_id ][ $sku ] = __( 'enter the correct amount', 'usces' ) . '<br />';
オプションチェック用のエラーメッセージ
$mes[ $post_id ][ $sku ] .= sprintf( __( 'Chose the %s', 'usces' ), urldecode( $value ) ) . '<br />
など
上記に対しても修正が必要でしょうか?
例えば
$mes[ $post_id ][ urldecode( $sku ) ] = __( 'enter the correct amount', 'usces' ) . '<br />';
あるいは、デフォルトのコード内に$sku_code = urldecode( $sku );が存在しましたので、
$mes[ $post_id ][ $sku_code ] = __( 'enter the correct amount', 'usces' ) . '<br />';
でも問題ないのかと思います。
これらは、実際には、PHPのエラーが出る前に JavaScript のエラーが先に出るので、テスト段階でも詳しく確かめることはできないでおりました。この(:)コロン問題は、JavaScript のエラー表示に任せておけば、PHP側のエラー表示は特に気にする必要もないでしょうか?それとも、JavaScript 側にも修正が必要なのでしょうか?
それから、実は、
urldecode()については、当初から目星をつけてテストをしていたのですが、想定通りに動いてくれない部分があり、自分の拙いコーディングを何度も疑ってやり直し七転八倒しておりました。
お陰様で、原因の1つは、今回、ご指摘いただいたurldecode()だと確定しました。
これでも直らない部分があり、今では複合的な原因があるように感じております。その直らない部分といいますのは、WCEX SKUセレクトを有効化し、SKUセレクト用のSKUを作成していましたところ、SKUの登録順で1番目のSKUをカートに入れるときにはエラーメッセージが出現しましたが、2番目以降のSKUをカートに入れる時にはエラーメッセージが出現しないというものです。
具体的に作りたいものは、特定の商品ページに複数のSKU作り、各々のSKUを排他的にしか購入できないようにするものです。今回、コロンの問題を排除できたものの、それでもこの部分はうまくいきませんでした。
そこで確認なのですが、
Welcart Basic ver.1.8.8 wc_templates/wc_sku_select.php 133 <div class="error_message"><?php usces_singleitem_error_message( $post->ID, usces_the_itemSku( 'return' ) ); ?></div>wc_sku_select.php においても、「シングルアイテムエラーメッセージ」という関数名となっておりますが、共通という理解で合ってますでしょうか?(sku select 用のエラーメッセージ取得関数は存在しますか?)
今回初めて、商品情報編集ページでSKUセレクト用のSKU を使用しないで複数SKUをばらして作成すると、自分のコードでも、すべてのSKUで
$mesメッセージを表示できることに気づきました。usces_singleitem_error_message()では、WCEX SKU Select に対応できないのでしょうか?もしかして、
usces_filter_incart_checkのコーディングを工夫すれば、何とかなるものでしょうか?お手数をお掛けいたしますが、ご確認いただけますと幸いです。
よろしくお願いいたします。Alicia
参加者usces_filter_incart_checkで返すエラーが表示されない(続)
トピック立てました。
Alicia
参加者——————————————-
テスト環境
WordPress のバージョン:6.8.3
Welcart のバージョン:2.11.25
PHP のバージョン:8.2.28
Welcart専用の拡張プラグインとバージョン:WCEX SKU Select 1.4.7
ご利用の親テーマとバージョン : Welcart Basic 1.8.8
ご利用の子テーマとバージョン : なし
症状を確認したブラウザ: Chrome (Win)
サーバー【重要】:シンクラウド株式会社 シン・レンタルサーバー ベーシック
——————————————–Alicia
参加者いつもお世話になっております。
次のトピックに関連するかもしれませんが、
SKUに/や-の記号が含まれていると数量更新ができないusces_filter_incart_check
では、コロン(:) もダメでした。
Welcart 2.11.25 usc-e-shop/functions/template_func.php 3709~ function usces_singleitem_error_message( $post_id, $skukey, $out = '' ) { if ( ! isset( $_SESSION['usces_singleitem']['error_message'][ $post_id ][ $skukey ] ) ) { $ret = ''; ///////////////// ← SKUコードに コロン(:)が含まれていると、エラーメッセージが表示されずこの行を通りました。 } else { $ret = $_SESSION['usces_singleitem']['error_message'][ $post_id ][ $skukey ]; } if ( 'return' === $out ) { return wel_esc_script( $ret ); } else { wel_esc_script_e( $ret ); } }一応、マニュアルを確認したのですが、現状では、
SKUコード(必須)
半角英数で作成してください。空白文字を含めるのは推奨いたしません。
ハイフン(-)、アンダースコア(_) 、コロン(:)は利用可能です。
重複のないユニークなコードが必要です。同一商品内で同じSKUコードを使用することはできません。コードの付け方にルールはありませんが、あまり長くなり過ぎると改行したりして見栄えが悪くなります。となっていました。
お忙しいところ恐れ入りますが、ご確認いただけますと幸いです。
よろしくお願いいたします。Alicia
参加者ayazaki 様
こんにちは。
苦肉の策ではありますが・・・。
在庫のある「お選びください」を作り、そのまま次へ進まれてしまった場合に、
usces_filter_incart_check
で弾いてしまうという手もありそうな気がします。
Alicia
参加者dai 様
こんにちは。
「抜粋」がどのことかよくわかりませんが、
とのことですが、furuta 様が仰るように、まずは「抜粋」をご確認ください。
ご確認いただいていない状況で議論を進めるのもどうかと思います。
表示オプションにて、「抜粋」にチェックは入っていますでしょうか?1.過去に、「抜粋」にデータ入力された商品を登録する。
2.1で作成した商品データを「複写して新規」で新たに商品登録。このとき、元の「抜粋」データも複写されているが、この時は何らかの理由で「抜粋」が非表示にされていて、気がつくことはない。
3.1.の商品が不要になったので削除する。で、仰っている状況が簡単に再現されてしまいます。
まずは、今一度、「抜粋」に過去のデータが入力されたままになっていないかご確認ください。Alicia
参加者類似案件ですね。
Alicia
参加者sutekina 様
質問を投げっぱなしにするかたも多い中、このフォーラムのルールに従ってきちんと顛末をご報告くださりありがとうございます。やっぱり自由にカスタマイズできるのは、Welcart の魅力ですね。
1つ漏れていたようです。PHP のバージョン:8.3.8
Welcart は今のところ PHP 8.3 に対応していません。予期せぬトラブルに遭う前に、PHP 7.4から8.2 にすることをお勧めします。
Alicia
参加者syuwacchi 様
こんにちは。
こちらはもう対応済みなのでしょうか?
ご存じないようなので貼っておきますね。ご自身でご確認ください。
Bug Tracker右上にプロジェクトを選択できるところがありますので、
「テーマ Welcart Mode 」でフィルタリングして左メニューの「ロードマップ」にあるうちは、まだリリースされていないということです。ID 0005270 のステータスが今「done」ですがこれが「解決済」になり、同時期にリリースされる予定のものがすべて「解決済」になればリリースされると思います。
それまで焦らず、待ちましょう。
デモサイトでは、テスト途中なのかもしれませんね。Alicia
参加者sutekina 様
こんにちは。横から失礼します。
フォーラムで「対応状況」で検索して頂ければ出てくると思いますが、この部分のカスタマイズは結構奥が深いです。
おそらく、仰っている問題は、
usces_filter_orderlist_search_process_status
のカスタマイズが抜けているためかと思います。
ほかに一括処理までしたいとなると、ポイントの処理などかなり面倒な考察が必要になりますので少し沼に入ります。以下、ご参考まで。
過去のフォーラムAlicia
参加者ご確認ありがとうございます。
無効化後、キャッシュを消して更新したあとでまだ続くようであれば、他の原因が考えられますね。1ページ目にはすべて表示されているのですが、
Mode を持ってないので私には問題の切り分けができませんが、Filter 系のプラグインは、独自の pagination を備えていることが多く、テーマ側のそれと大抵の場合コンフリクトします。
仕様なのかバグなのか、まずは投稿前に問題の切り分けをしないと原因にたどり着けないので、サイドバーのウィジェットがテーマ由来のものでなければ、Welcart Basic に変更してみる、関係ないプラグインを全部無効化してみる、カスタマイズは一旦全部外してみる、コンソールにエラーがないか確認する、デバッグモードでログを確認するなど、所定の確認が必要ですね。
-
この返信は4週前に
-
投稿者投稿
PAGE TOP