解決済「カートへ入れる」ときの JavaScriptのアラート
タグ: WCEX Multi Price
-
投稿者投稿
-
2023年5月30日 3:54 PM #100198Alicia参加者
「カートへ入れる」ときの JavaScriptのアラートをフックで修正したいと考えています。
WCEX Multi Price を利用しています。
商品ごとに少しずつルールが違うために共通オプションが多数になってしまいました。
共通オプション名をユニークにしなければならない仕様とのことで、少しずつ名前を変えなければならず苦労しています。
そこで、共通オプション名の先頭に決まった桁数の文字列を追加して、[管理コード]+[オプション名]を[共通オプション名]とすることにしました。
このユニークな[共通オプション名]は、そのままですとフロント側にも出てしまうので、テーマ修正とフックの利用で先頭の[管理コード]部分を消去しています。
商品詳細ページ(wc_item_single.php 、wc_sku_select_php)、カートページ、内容確認ページ、サンキューメール、管理メール、PDF関係(領収書のみ別の問題が出たためトピックを分けました。)、購入履歴…と順調に変更できました。前置きが長くなり申し訳ありませんが、ここからが本題です。
次に、必須オプションが選択されない状態でカートボタンを押したときに出る「○○[共通オプション名]を選択してください」のバリデーションについてです。
usces_filter_incart_check で「カートへ入れる」ときのエラー表示は、うまく修正できたのですが、このエラーを表示する前に立ち塞がったのが、JavaScript のアラートでした。「カートへ入れる」ボタン付近に出るPHPのエラー表示よりも前にJavaScriptのポップアップのアラートが出るのでPHPのエラーまでたどり着きません。
それならばと、JavaScriptを修正しようとしたところ、この部分のフックが私にはよくわかりませんでした。具体的には
usc-e-shop/classes/usceshop.class.php の アラートメッセージ var mes をconcat していく部分なのですが1982行目付近の
mes += uscesL10n.mes_opts+"\n";
を
var my_mes_opts = uscesL10n.mes_opts; mes += my_mes_opts.substr(8)+"\n"; //先頭の[管理コード]部分8文字を消去
としたいと考えていますが、これをフックで行いたいのです。
1995行目付近に
<?php apply_filters( 'usces_filter_inCart_js_check', $item->ID ); //Unavailable ?> <?php do_action( 'usces_action_inCart_js_check', $item->ID ); ?>
の2行が存在しているのですが、このフックの使い方がよくわかりません。
これで、var mes をそっくり書き換えられるのかと思っていますが、//Unavailable とも記述されており、よくわからないままです。どなたか、お分かりになる方がいらっしゃいましたら、ご指導頂けませんでしょうか。
よろしくお願いいたします。
——————————————-
テスト環境
WordPress のバージョン:6.2.2
Welcart のバージョン:2.8.18
PHP のバージョン: 8.0.25
Welcart専用の拡張プラグインとバージョン:SKU Select 1.4.5 、WCEX Multi Price 1.3.1、WCEX Patch for AFC 6.0.3
ご利用の親テーマとバージョン :Welcart Basic 1.7.5
ご利用の子テーマとバージョン :
症状を確認したブラウザ:Chrome 113.0.5672.127
サーバー【重要】:(会社名、サービス名)Xserver シン・レンタルサーバー ベーシック
——————————————–2023年6月1日 5:27 PM #100229furutaキーマスターAlicia 様
こんにちは。まず、ご指摘のフックはオプション名を変更できるものではございません。
この「uscesL10n.mes_opts」には、オプションのキーを正しくセットし、エンコードしたオプション名をセットしなければいけないので、フックでカスタマイズするには難易度が高いかと思われますが、フィルターフックを入れて変更できるか社内で検討いたしますので、しばらくお待ちいただけますでしょうか。よろしくお願いいたします。2023年6月1日 6:56 PM #100234Alicia参加者furuta 様
ご回答ありがとうございます。
お忙しいところ、お手を煩わせて恐縮いたします。他にも、WCEX Multi Price の共通オプション名の管理で苦労されている方がおられるかもしれません。
mes_opts がフックで変更できるようになれば最良なのですが、ただ、これは贅沢な望みなのかもしれません。
var mes でも構いませんので、何か手段を残して頂けると大変助かります。よろしくご検討頂けますよう、お願い申し上げます。
2023年7月6日 4:09 PM #100398furutaキーマスターAlicia 様
Welcart 2.8.19 にてフィルターフックを追加いたしました。
こちらの usces_filter_uscesL10n_option_name / フィルターフック をご利用いただけますでしょうか。よろしくお願いいたします。2023年7月7日 6:41 AM #100403Alicia参加者furuta 様 yskysmr 様
Welcart Ver.2.8.19 の修正を確認いたしました。
お忙しいところありがとうございました。早速、真新しいフィルターフックを利用させていただきました。そしてソースコードを見て感激しました。
再び、JavaScript と格闘するものと覚悟していましたが、素人の私にでもPHPだけで驚くほど簡単に書き換えられるようになっていました。また、リファレンスもとても丁寧に作っていただいて大変ありがたく思いました。
オプション名を書き換えられたことで目的は達せられました。
ただ、リファレンスにもあった通り、「~を選択してください」や「~を入力してください」の部分まで替えようとすると、var mes を丸ごと書き換えるようなフィルターフックが必要なのかもしれませんが、現状それは存在しないということなのでしょうね。<?php apply_filters( 'usces_filter_inCart_js_check', $item->ID ); //Unavailable ?>
は、よくわからないままでしたが、私にはまだまだ学習が必要なようです。
ここに至るまで、多くのフィルターフックを渡り歩く必要がありましたが、今回新たに作っていただきましたこのフックのお陰で、また、別件で冒頭に記した、領収書PDFのオプション表示にもご対応いただけたことで、ついに最後まで完成させることができました。
ご尽力に唯々感謝いたします。ありがとうございました。こちらも解決済みとしてください。最後になりましたが、WCEX Multi Price を利用しておられる方で、共通オプションが多数になってしまって管理に疲れてしまった方へ、
[管理コード]+[オプション名]を共通オプション名とし、フロントに出る直前に[管理コード]部分だけ消去するこの方法は、有用だと思います。おすすめします。
2023年7月7日 11:07 AM #100407yskysmrキーマスターAlicia 様
早速使っていただき、ありがとうございます。
‘usces_filter_uscesL10n_option_name’ はあくまでオプション名のみを変更できるようにしたもので、ご指摘のとおり「~を選択してください」「~を入力してください」の部分まで変更することは敢えてできないようにしています。今後フックを追加するかは検討してまいります。
尚、フィルターフック ‘usces_filter_inCart_js_check’ につきましては、今後使用不可としたいので、ご説明は省かせていただきます。何卒ご了承くださいますよう、お願いいたします。
ちなみにですが、すぐ下にある ‘usces_action_inCart_js_check’ というアクションフックでは、JavaScript で独自のチェックを入れることができます。いずれのフックもメッセージを変更するといったことには利用できません。 -
投稿者投稿
- このトピックに返信するにはログインが必要です。