商品一括登録時の発送日の値について

フォーラム 要望と提案 商品一括登録時の発送日の値について

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

    お世話になります。
    いくつか要望させて頂きたく書き込みさせて頂きます。

    ◆1
    usces_filter_shipping_rule
    及びusces_filter_shipping_indicationを使用して、
    もともとある0~8の発送日安の値にプラスで
    10、11、12・・・と発送日の選択肢を増やしております。

    これは問題ないのですが、
    商品一括登録(csv)を行う際、
    値を増やした発送日に設定するとエラーが出て登録ができません。

    define_function内のUSCES_COL_ITEM_SHIPPINGの値が
    9 < $data に固定されているためなので、
    一括登録を使う場合は
    ここを当方で設定している任意の値に書き直しております。

    ですがファイルを直接編集するのは推奨されることではありませんので
    この値をフックで変えられるようにできると助かります。

    ◆2
    usces_the_shipment_aimを使用して、フロント側の商品ページに発送日目安を表示させております。
    しかし、◆1で追加した項目の発送日目安の値が表示されず、phpのwarningが表示されてしまうことがあります。
    (エラーが出た場合の画像を添付します)
    もともとある8までの値であれば確実に表示されます。

    頻度は5回に1回程度、特に回線の速度が遅い時には3回に1回ぐらいは起こります。

    速度が遅い時、テーマのfunction.php内で宣言している値が
    usces_the_shipment_aimが呼ばれるまでに間に合わず
    対応する値が無い状態になっているのでしょうか。

    回避するため、ご法度ですがtemplate_func.php内の
    function usces_the_shipment_aim内に
    直接各値を宣言して、関数が呼ばれた際に必ず参照できるようにしております。
    (こうすると、確実に表示されるようにはなりました)

    しかしアップデートの度につけなくてはならないため、
    できればfunction.php内の値を読み終わってから
    usces_the_shipment_aimが呼び出しされるような形にならないものかと思っております。

    warningを出さないように設定すればエラーをお客様に見えなくはできるのですが、
    発送日目安の欄が空白になるのでできれば確実に表示されるようにしたいです。

    ◆3
    月1回程度、welcart本体のアップデートがありますが、
    リリース予定日の告知を出して頂くことは難しいでしょうか?
    (メールまたはサイト上)
    要望1や2とも関連しますが、
    フックでの対応ができない箇所についてはファイルを修正するしかないので
    アップデートされてからすぐに対応したいです。

    よろしくお願いいたします。

    ——————————————-
    WordPress のバージョン:6.6
    Welcart のバージョン:2.10.5
    PHP のバージョン:8.0.3
    Welcart専用の拡張プラグインとバージョン:
    WCEX Sagawa Number バージョン 2.0.1
    WCEX zaiko Robotバージョン 1.1.6
    ご利用の親テーマとバージョン :Welcart Basic 1.8.4
    ご利用の子テーマとバージョン :Welcart VOLL 1.5.1
    症状を確認したブラウザ:Chrome
    サーバー:AmazonAWS EC2
    ——————————————–

    Attachments:
    You must be logged in to view attached files.
    #102248
    urushi
    キーマスター

    CBH 様

    >◆1
    >define_function内のUSCES_COL_ITEM_SHIPPINGの値が
    >9 < $data に固定されているためなので、 では「9」の値を変えられるようにフックを入れます。 >◆2
    >usces_the_shipment_aimを使用して、フロント側の商品ページに発送日目安を表示させております。
    >しかし、◆1で追加した項目の発送日目安の値が表示されず、phpのwarningが表示されてしまうことがあります。

    こちらについては再現ができませんでした。

    >function usces_the_shipment_aim内に
    >直接各値を宣言して、関数が呼ばれた際に必ず参照できるようにしております。

    の「直接各値を」とは、具体的にどういうことをされているでしょうか。

    >◆3
    >月1回程度、welcart本体のアップデートがありますが、
    >リリース予定日の告知を出して頂くことは難しいでしょうか?

    ご不便をおかけしまして申し訳ありません。
    リリース前の告知を行うことは大変難しく、どうしてもリリース後のお知らせとなってしまいます。
    ご認識いただいているとおり、Welcartを改変してのカスタマイズは避けていただきたいので、今回のようにフックの追加をご依頼いただくか、うまく動かない箇所についてご相談いただければと思います。

    #102261
    CBH
    参加者

    urushi 様

    ご返信ありがとうございます。

    >◆1
    フックの追加を検討いただけるとのことで、助かります。

    >◆2
    こちらでも発生する条件が分からず、漠然と
    サイトが重たいように感じる時…ぐらいしか情報がなく申し訳ありません。
    当社でも1回もみたことがない人もいますし、
    10回に1回~5回に1回~3回に1回ぐらいの人もいるという感じです。
    functions.phpが大きくなりすぎているので、
    別のファイルに分けて、requireで読み込む方がいいのでしょうかね。

    参照の具体的なソースを以下に記載します

    ファイル:template_func.php
    377行目あたりの
    function usces_the_shipment_aim(){} にて

    ====ここから====

    function usces_the_shipment_aim( $out = ” ) {
    global $post;

    $product = wel_get_product( $post );
    $str = $product[‘itemShipping’];
    $no = (int) $str;
    if ( 0 === $no ) {
    return ”;
    }
    $rules = get_option( ‘usces_shipping_rule’ );

    if ( ‘return’ === $out ) {
    return $rules[ $no ];
    } else {

    //ここから追加部分
    if($no>’9′){
    $rules[10] =’取寄品:発送目安3~10日(土日祝除く)’;
    $rules[11] = ‘在庫品:(土日祝除く12時まで)当日発送予定’;
    $rules[12] = ‘在庫品:(土日祝除く)2日程度で発送予定’;
    $rules[13] = ‘メーカー直送品:(土日祝除く12時まで)当日発送’;
    $rules[14] = ‘取寄品:(土日祝除く)2日程度で発送予定’;
    $rules[15] = ‘取寄品:(土日祝除く)3日程度で発送予定’;
    }
    //追加ここまで
    echo esc_html( $rules[ $no ] );

    }
    }

    ======ここまで=====

    if($no>’9′){}
    の部分が、こちらで追加した箇所です。
    実際は$rules[37]までありますが、長いので15までにしております。

    >◆3
    緊急性の高いものもありますので、やはり難しいようですね。
    それでは、フロント側に関連があるものから
    また別スレッドにて要望を出させて頂きます。

    よろしくお願いいたします。

    #102281
    Alicia
    参加者

    CBH 様

    こんにちは。

    > ◆2

    同じ場所の一連のカスタマイズをして、usces_the_shipment_aim も使っていますが、100回やってもエラーは再現できません。もちろん、コードの上書きもしていません。なので、おそらくタイミングとかそういうものでもないと思います。

    関係するコードを全てみればはっきりするのですが、全容がわからないので推測になります。

    一連のカスタマイズ後、商品詳細ページでデフォルトにはない、array key 11 で商品登録した後、usces_filter_shipping_rule で $shipping_rule の array key 11 を消してみて、無理矢理同じエラーを出してみました。

    なので、おそらくエラーが存在するのは、 usces_filter_shipping_rule の $shipping_rule です。

    ひとつ試してもらいたいことがあります。

    シングルクォーテーションに見える‘や’の部分をキーボードを英数入力状態にして入力し直してみてください。

    
    if($no>’9′){
    $rules[10] =’取寄品:発送目安3~10日(土日祝除く)’;
    $rules[11] = ‘在庫品:(土日祝除く12時まで)当日発送予定’;
    
    ’9′
    ’取 --- )’
     ‘在 --- 定’
    

    違いがわかりますか?(このフォーラムでの見え方も違うので、ご利用のエディタでどう見えているか不安ですが・・・)

    Unicode U+0027 U+2018 U+2019 の違いです。(さらにわかりませんね。)

    おそらくサイゼリヤの間違い探し級に、見つけるのが難しいです。
    ちなみに私は肉眼で見つけられなかったので、ラッコツールズのPHP構文チェッカーに流し込みました。
    いちいちエディターを立ち上げるのが面倒なときに、ラッコツールは大変重宝してます。今回も一発でした。

    また、このフォーラムでコードを書くときは、次回から<code>を使ってもらえると助かります。
    よくある、エディタを経由してコピペを繰り返す間に文字化けしたのかもしれませんね。

    array key 11 と出ているということは、 key 10 より上が怪しいです。
    そこから、シングルクォーテーションが正しく閉じられず、構文エラーが出ているのではないでしょうか。

    当たってれば、良いのですが。

    > ◆3

     私も最初は、同じ悩みを抱えていました。
     
     カスタマイズは全てフック(無ければ無理を言ってフックを作ってもらっています。)で対応しているので、基本的にいつ自動アップデートがされても困ることはないのですが、過去にWelcart 本体の緊急ロールバックが必要になったことがあったため、大きな声では言えませんが、(キーマスターの方へ、フォーラムの運営上問題があるかもしれませんので、この部分は削除していただいた方が良いかもしれません。)私は、数時間だけ更新を遅らせて、必ず管理者の在席中に更新し、サイトに問題がないか確認するようにしています。
     
     バグトラッカーを毎日チェックしていますので、そろそろ更新かな?というタイミングが予想できています。もちろん完全ではありませんので、リスクとトレードオフですが、リスクは最小限にしたいですから毎日チェックの努力は惜しみません。
     
     全て自己責任です。おすすめはしません。

    #102282
    CBH
    参加者

    Alicia様

    ご返信ありがとうございます。
    また、コードをそのまま貼り付けてしまい、申し訳ございません。
    以下に書き直しします。

    ◆functions内の記述↓

    add_filter('usces_filter_shipping_rule','my_filter_shipping_rule');
    function my_filter_shipping_rule($shipping_rule) {
    $shipping_rule[10] ='取寄品:発送目安3~10日(土日祝除く)';
    $shipping_rule[11] = '在庫品:(土日祝除く12時まで)当日発送予定';
    $shipping_rule[12] = '在庫品:(土日祝除く)2日程度で発送予定';
    $shipping_rule[13] = '在庫品◇:(土日祝除く12時まで)当日発送';
    $shipping_rule[14] = '取寄品:(土日祝除く)2日程度で発送予定';
    $shipping_rule[15] = '取寄品:(土日祝除く)3日程度で発送予定';
    $shipping_rule[16] = '取寄品:(土日祝除く)4日程度で発送予定';
    $shipping_rule[17] = '取寄品:(土日祝除く)5日程度で発送予定';
    $shipping_rule[18] = '取寄品:(土日祝除く)7日程度で発送予定';
    $shipping_rule[19] = '取寄品:(土日祝除く)後日、発送日を案内';
    $shipping_rule[20] = '取寄品:(土日祝除)5日程度で発送日を案内';
    return $shipping_rule;
    }

    ◆template_func内の記述↓

    function usces_the_shipment_aim( $out = '' ) {
    	global $post;
    
    	$product = wel_get_product( $post );
    	$str     = $product['itemShipping'];
    	$no      = (int) $str;
    	if ( 0 === $no ) {
    		return '';
    	}
    	$rules = get_option( 'usces_shipping_rule' );
    
    	if ( 'return' === $out ) {
    		return $rules[ $no ];
    	} else {
    
    if($no>'9'){
    $rules[10] ='取寄品:発送目安3~10日(土日祝除く)';
    $rules[11] = '在庫品:(土日祝除く12時まで)当日発送予定';
    $rules[12] = '在庫品:(土日祝除く)2日程度で発送予定';
    $rules[13] = '在庫品◇:(土日祝除く12時まで)当日発送';
    $rules[14] = '取寄品:(土日祝除く)2日程度で発送予定';
    $rules[15] = '取寄品:(土日祝除く)3日程度で発送予定';
    $rules[16] = '取寄品:(土日祝除く)4日程度で発送予定';
    $rules[17] = '取寄品:(土日祝除く)5日程度で発送予定';
    $rules[18] = '取寄品:(土日祝除く)7日程度で発送予定';
    $rules[19] = '取寄品:(土日祝除く)後日、発送日を案内';
    $rules[20] = '取寄品:(土日祝除)5日程度で発送日を案内';
    }
    
    		echo esc_html( $rules[ $no ] );
    
    	}
    }

    実際のファイルのコードをラッコツールズでチェックしてみましたが、
    エラーはありませんでした。
    シングルコーテーションについても、元ファイルの方は
    文字コードが違うということもなさそうです。

    念のため、functions.php全体をラッコツールズにかけてみましたが、
    構文エラーはありませんでした。

    #102284
    Alicia
    参加者

    CBH 様

    フォーラム上だけ文字化けしてしまったんですね。

    この部分的な、usces_filter_shipping_rule で試してみましたが、やはり何度やってもエラーは再現しませんでした。

    色々、考えてみました。。。 

    こちらでも発生する条件が分からず、漠然と
    サイトが重たいように感じる時…ぐらいしか情報がなく申し訳ありません。
    当社でも1回もみたことがない人もいますし、
    10回に1回~5回に1回~3回に1回ぐらいの人もいるという感じです。

    この挙動は、キャッシュのあるなしの違いでしょうか?
    毎回同じ商品でのテストでしょうか? エラーがでるのは、array key 11 だけですか?
    商品登録後に、usces_filter_shipping_rule を遡及して変更されてませんでしょうか?

    Chrome で「キャッシュの消去とハード再読み込み」は試されましたでしょうか?
    関係のないプラグインは、すべて停止しておられますか?
    特にキャッシュ系やセキュリティー系のプラグインは、無効化されてますでしょうか?
    サーバー側のキャッシュ設定はどうなっていますか?

    どれかが、ヒントになればいいですね。

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