解決済[フックの要望]商品名の後の「商品オプション」について

フォーラム 要望と提案 【解決済】[フックの要望]商品名の後の「商品オプション」について

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

    現状、カート内などで商品名に追記される「商品オプション」表示のフックとして下記のようなフックがあると思いますが、「商品オプション」が全て結合され文字列になった状態なので、加工が難しい状態です。
    連想配列の値も取得できますが、文字列化する処理を自前で実装しなくてはならず、html・pdf・メールの場合で改行コードを分ける処理が必要なため、同一の手順で変更することができません。

    usces_filter_option_history
    usces_filter_option_info_history
    usces_filter_option_cart
    usces_filter_option_info_cart
    usces_filter_option_confirm
    usces_filter_option_info_confirm
    usces_filter_option_ordermail
    usces_filter_option_adminmail
    usces_filter_option_pdf

    文字列化される前の部分で「商品オプション」の配列を加工ができれば、特定のキーの削除も容易ですし、文字列化する処理も自前で実装しなくて済みますので改行を含むテキストの編集も容易です。
    そのため、それぞれのフックの前に新たなフックを追加することをご検討いただければと思います。

    例)usces_filter_option_confirmフックの前に新たなフック追加
    template_func.php 3031行

    $row .= '</td><td class="productname">' . apply_filters('usces_filter_cart_item_name', esc_html($cartItemName), $args ) . '';
    $options = apply_filters( 'usces_filter_xxxxxxxxx_xxxxxxxx', $options, $○○, $○○);//○○○○○新たなフック○○○○○
    if( is_array($options) && count($options) > 0 ){
    	$optstr = '';
    	foreach($options as $key => $value){
    		if( !empty($key) ) {
    			$key = urldecode($key);
    			if(is_array($value)) {
    				$c = '';
    				$optstr .= esc_html($key) . ' : ';
    				foreach($value as $v) {
    					$optstr .= $c.nl2br(esc_html(urldecode($v)));
    					$c = ', ';
    				}
    				$optstr .= "\n";
    			} else {
    				$optstr .= esc_html($key) . ' : ' . nl2br(esc_html(urldecode($value))) . "\n";
    			}
    		}
    	}
    	$row .= apply_filters( 'usces_filter_option_confirm', $optstr, $options, $args );
    }

    配列が空の場合でも操作できるよう
    if( is_array($options) && count($options) > 0 ){
    の前のあると助かります。

    ご検討のほどよろしくお願いいたします。

    #95616
    sagawa
    キーマスター

    こんにちは。

    文字列化する処理を自前で実装しなくてはならず、html・pdf・メールの場合で改行コードを分ける処理が必要なため、同一の手順で変更することができません。

    拝見する限り、オプション(配列)の加工も含めて既存のフックで対応可能かと思います。
    そのため、なぜフックの追加が必要かがイメージできておりません。
    必要なのであれば要望として挙げる必要がありますので、理由を詳細に教えていただけますでしょうか?

    #95619
    wsmfp327
    参加者

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

    例としてusces_filter_option_confirmフック部分
    $row .= apply_filters( ‘usces_filter_option_confirm’, $optstr, $options, $args );

    変更(加工)できるのは$optstrであり、$optionsは加工できない。
    また$optionsを加工できても既にforeachループの後のフックなので意味がない。

    と考えております。

    #95632
    sagawa
    キーマスター

    wsmfp327様

    ありがとうございます。
    要望として承りますが、諸事情によりご希望に沿えない場合がございますので、ご了承いただきますようお願いいたします。

    #95635
    wsmfp327
    参加者

    ご検討ありがとうございます。
    よろしくお願い致します。

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