usces_filter_incart_checkで返すエラーが表示されない

フォーラム その他 usces_filter_incart_checkで返すエラーが表示されない

  • このトピックには13件の返信、4人の参加者があり、最後にAliciaにより1週前に更新されました。
14件の投稿を表示中 - 1 - 14件目 (全14件中)
  • 投稿者
    投稿
  • #72222
    accent
    参加者

    ——————————————-
    WordPress のバージョン:4.0
    Welcart のバージョン:1.4.8.1409231
    ご利用のテーマ:AN TCD014
    症状を確認したブラウザ:chrome
    サーバー(会社名、サービス名):ロリポップ
    SSLの利用: 共用
    WordPress のパーマリンク設定:/archives/%post_id%
    ——————————————–
    はじめまして、よろしくお願いします。
    同時購入をさせたくない商品のskuを Recurring_SKU に配列で管理し
    メッセージを返したいと思っています。

    そこで以下のように、書きました。

    add_filter(‘usces_filter_incart_check’, function($mes, $post_id, $sku) {
    global $usces;
    global $Recurring_SKU;
    $cart = $usces->cart->get_cart();

    if(in_array($sku,$Recurring_SKU)==true)
    {
    if(count($cart) >0)
    {
    $mes[$post_id][$sku]= “こちらの商品は他の商品と同時に購入できません”;
    }
    }
    return($mes);
    }, 99, 5);

    商品はカートに入らないようになりましたが、エラーメッセージが表示されません。
    <div class=”error_message”></div>
    URLには、#cart_button が付加されております。

    ご教授願えると助かります。

    #72224
    yskysmr
    キーマスター

    こんにちは。

    add_filter は、以下のように記述してください。

    add_filter( ‘usces_filter_incart_check’, ‘my_filter_incart_check’, 10, 3 );
    function my_filter_incart_check( $mes, $post_id, $sku ) {
      :
    }
    #72387
    accent
    参加者

    yskysmr 様

    add_filter( ‘usces_filter_incart_check’, ‘my_filter_incart_check’, 10, 3 );
    function my_filter_incart_check( $mes, $post_id, $sku ) {
    :
    }

    のように、書き換えましたが、やはりエラーメッセージは表示されずカートに入れようとした商品ページに戻されるだけの動作になります。

    コーディングが悪いのでしょうか?

    #72484
    nanbu
    キーマスター

    こんにちは。

    何がreturnされているかvar_dumpしてみていますか?
    in_array($sku,$Recurring_SKU)は間違いなくtrueですか?

    #72500
    accent
    参加者

    nanbuさん ありがとうございます。

    $mes[$post_id][$sku]= “こちらの商品は他の商品と同時に購入できません”;
    という形で返っています。

    in_array($sku,$Recurring_SKU) は trueです。

    #72549
    nanbu
    キーマスター

    そうですか。

    では、SKUコードに全角文字を使っていることは無いでしょうか。もしそうでしたら$skuはurlencodeしてやらなくてはいけません。

    それとテンプレート側ですが、この様になっていますでしょうか。

    
    <div class="error_message"><?php usces_singleitem_error_message($post->ID, usces_the_itemSku('return')); ?></div>
    
    #72683
    accent
    参加者

    nanbuさん

    SKUコードは半角英数字です。

    ‘<div class=”error_message”>’ .usces_singleitem_error_message($post->ID, usces_the_itemSku(‘return’), ‘return’). ‘</div>’

    となっています。

    #72808
    nanbu
    キーマスター

    上記コードはwc_teplatesのものではないようですが、テンプレートは何を使っていらっしゃいますか?

    #72845
    accent
    参加者

    nanbuさん お返事ありがとうございます。

    TCDの AN です。

    #72908
    nanbu
    キーマスター

    どちらのテーマか存じませんが、商品詳細ページはwc_templatesを使っていただくのが良いかと思います。

    #103983
    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コードを使用することはできません。コードの付け方にルールはありませんが、あまり長くなり過ぎると改行したりして見栄えが悪くなります。

    となっていました。

    お忙しいところ恐れ入りますが、ご確認いただけますと幸いです。
    よろしくお願いいたします。

    #103984
    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)
    サーバー【重要】:シンクラウド株式会社 シン・レンタルサーバー ベーシック
    ——————————————–

    #103986
    yskysmr
    キーマスター

    Alicia 様

    いつもありがとうございます。
    まず、大変恐縮ですが、投稿主様の症状と同じではあると思いますが、おそらく利用しているWelcartのバージョンが異なると思います。可能でしたら、新たに投稿を作成していただけますよう、お願いいたします。

    お問い合わせの内容につきまして、そもそも usces_filter_incart_check フックのリファレンスの用意がありませんでした。大変申し訳ありません。早急に作成して公開いたします。
    (追記:公開いたしました。)

    usces_filter_incart_check フックの第3引数の $sku ですが、使用するときに、urldecode をしてみていただけますでしょうか。

    $mes[ $post_id ][ urldecode( $sku ) ] .= ‘エラーメッセージ’;

    フックの引数として渡すときにデコード済みの値を渡すように修正することは影響が大きいので、今のところ対応の予定はありません。
    お手数ですが、お試しくださいませ。

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