解決済「カートへ入れる」ときの JavaScriptのアラート

フォーラム 使い方全般 【解決済】「カートへ入れる」ときの JavaScriptのアラート

  • このトピックには5件の返信、3人の参加者があり、最後にyskysmrにより1年、 4ヶ月前に更新されました。
6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • 投稿者
    投稿
  • #100198
    Alicia
    参加者

    「カートへ入れる」ときの 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 シン・レンタルサーバー ベーシック
    ——————————————–

    #100229
    furuta
    キーマスター

    Alicia 様

    こんにちは。まず、ご指摘のフックはオプション名を変更できるものではございません。
    この「uscesL10n.mes_opts」には、オプションのキーを正しくセットし、エンコードしたオプション名をセットしなければいけないので、フックでカスタマイズするには難易度が高いかと思われますが、フィルターフックを入れて変更できるか社内で検討いたしますので、しばらくお待ちいただけますでしょうか。よろしくお願いいたします。

    #100234
    Alicia
    参加者

    furuta 様

    ご回答ありがとうございます。
    お忙しいところ、お手を煩わせて恐縮いたします。

    他にも、WCEX Multi Price の共通オプション名の管理で苦労されている方がおられるかもしれません。

    mes_opts がフックで変更できるようになれば最良なのですが、ただ、これは贅沢な望みなのかもしれません。
    var mes でも構いませんので、何か手段を残して頂けると大変助かります。

    よろしくご検討頂けますよう、お願い申し上げます。

    #100398
    furuta
    キーマスター

    Alicia 様

    Welcart 2.8.19 にてフィルターフックを追加いたしました。
    こちらの usces_filter_uscesL10n_option_name / フィルターフック をご利用いただけますでしょうか。よろしくお願いいたします。

    #100403
    Alicia
    参加者

    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 を利用しておられる方で、共通オプションが多数になってしまって管理に疲れてしまった方へ、

    [管理コード]+[オプション名]を共通オプション名とし、フロントに出る直前に[管理コード]部分だけ消去するこの方法は、有用だと思います。おすすめします。

    #100407
    yskysmr
    キーマスター

    Alicia 様

    早速使っていただき、ありがとうございます。
    ‘usces_filter_uscesL10n_option_name’ はあくまでオプション名のみを変更できるようにしたもので、ご指摘のとおり「~を選択してください」「~を入力してください」の部分まで変更することは敢えてできないようにしています。今後フックを追加するかは検討してまいります。
    尚、フィルターフック ‘usces_filter_inCart_js_check’ につきましては、今後使用不可としたいので、ご説明は省かせていただきます。何卒ご了承くださいますよう、お願いいたします。
    ちなみにですが、すぐ下にある ‘usces_action_inCart_js_check’ というアクションフックでは、JavaScript で独自のチェックを入れることができます。いずれのフックもメッセージを変更するといったことには利用できません。

6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • このトピックに返信するにはログインが必要です。