usces_filter_incart_checkで返すエラーが表示されない(続)
-
投稿者投稿
-
2025年12月15日 7:09 AM #103989
Alicia
参加者関連トピック usces_filter_incart_checkで返すエラーが表示されない
いつもお世話になっております。
次のトピックに関連するかもしれませんが、
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コードを使用することはできません。コードの付け方にルールはありませんが、あまり長くなり過ぎると改行したりして見栄えが悪くなります。となっていました。
お忙しいところ恐れ入りますが、ご確認いただけますと幸いです。
よろしくお願いいたします。//////////////////////////////////
テスト環境
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)
サーバー【重要】:シンクラウド株式会社 シン・レンタルサーバー ベーシック
//////////////////////////////////以下、yskysmr 様より引用
Alicia 様
いつもありがとうございます。
まず、大変恐縮ですが、投稿主様の症状と同じではあると思いますが、おそらく利用しているWelcartのバージョンが異なると思います。可能でしたら、新たに投稿を作成していただけますよう、お願いいたします。お問い合わせの内容につきまして、そもそも
usces_filter_incart_checkフックのリファレンスの用意がありませんでした。大変申し訳ありません。早急に作成して公開いたします。
(追記:公開いたしました。)
usces_filter_incart_checkフックの第3引数の$skuですが、使用するときに、urldecodeをしてみていただけますでしょうか。$mes[ $post_id ][ urldecode( $sku ) ] .= ‘エラーメッセージ’;フックの引数として渡すときにデコード済みの値を渡すように修正することは影響が大きいので、今のところ対応の予定はありません。
お手数ですが、お試しくださいませ。2025年12月15日 7:28 AM #103991Alicia
参加者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のコーディングを工夫すれば、何とかなるものでしょうか?お手数をお掛けいたしますが、ご確認いただけますと幸いです。
よろしくお願いいたします。 -
投稿者投稿
- このトピックに返信するにはログインが必要です。
PAGE TOP