サイドナビ (widget:Welcart カテゴリー)に、カテゴリー画像を表示したい

フォーラム テンプレート(テーマ) サイドナビ (widget:Welcart カテゴリー)に、カテゴリー画像を表示したい

7件の投稿を表示中 - 1 - 7件目 (全7件中)
  • 投稿者
    投稿
  • #85897
    dswdsw123456
    参加者

    テーマの編集についてご質問いたします。

    サイドナビ widget の設定で Welcartカテゴリー を、
    使用してカテゴリ一覧を表示した際に

    カテゴリー名の横に、
    各カテゴリー画像を表示することは可能でしょうか?

    編集するファイルや、編集方法をお教えください。
    よろしくお願いいたします。

    #85899
    dswdsw123456
    参加者

    環境をペーストし忘れましたので、追記いたします。
    ——————————————-
    WordPress のバージョン:4.9.6–ja
    Welcart のバージョン:1.9.10

    ご利用のテーマ:Welcart VOLL 1.0.2
    ——————————————–

    #85901
    yasumax
    キーマスター

    こんにちは。

    該当箇所はWordPressの関数wp_list_categoriesを利用して表示しています。
    このパラメータを変更するフィルターが用意されていますので、これを利用して独自のwalkerを指定することで可能かと思います。
    apply_filters('usces_filter_welcart_category', $cquery, $cats->term_id)

    パラメータのWalkerクラスについては公式を参考にしてください。
    WordPress Codex 日本語 テンプレートタグ/wp_list_categories

    #85908
    dswdsw123456
    参加者

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

    お教えいただきました編集方法について
    FQAリファレンス > フィルターフック、アクションフックの利用方法 を参考に
    いろいろと試してみたのですが、表示することができませんでした。

    下記の内容についてお教えください。

    ● apply_filters(‘usces_filter_welcart_category’, $cquery, $cats->term_id)
    が記入されているファイル名をお教えください。

    ● 可能であれば、
    add_filter(‘usces_filter_welcart_category’, … の記入例をお教えいただけますようお願いいたします。

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

    #85917
    yasumax
    キーマスター

    こんにちは。

    ● apply_filters(‘usces_filter_welcart_category’, $cquery, $cats->term_id)
    が記入されているファイル名をお教えください。

    Welcartのプラグインフォルダ(usc-e-shop)内のwidgets/usces_category.phpになります。

    ● 可能であれば、
    add_filter(‘usces_filter_welcart_category’, … の記入例をお教えいただけますようお願いいたします。

    フックの使い方については下記トピックを参考にしてください。
    Welcart のカスタマイズとフック

    #85926
    dswdsw123456
    参加者

    フックについては理解できました。

    wp_list_categoriesの
    walkerについては、
    よくわからない部分が多く、
    少し時間をかけて調べたいと思います。

    ありがとうございました。

    #85929
    dswdsw123456
    参加者

    下記の方法で解決いたしました。

    walkerは、
    wp-includes/class-walker-category.php の中を
    ごっそりコピーして、1行だけ書き換えました。

    画像が無い場合の条件分岐など、まだ追加編集が必要ですが
    これで、思い通りの表示となりました。

    記入の内容に問題点等がある場合は
    ご指摘いただければ幸いです。

    お答えいただいた内容、大変助かりました。
    ありがとうございました。

    
    add_filter('usces_filter_welcart_category', 'my_category_func', 10, 2);
    function my_category_func() {
    $args = func_get_args();
    list($cquery, $term_id) = $args;
    $cquery =
    array(
    	'use_desc_for_title' => 1,
    	'child_of' => $term_id,
    	'title_li' => '',
    	//'show_count' => 1,
    	'walker' => new Walker_Category_Linkin_Postcount()
    );
    return $cquery;
    }
    
    class Walker_Category_Linkin_Postcount extends Walker_Category {
    	public function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
    		/** This filter is documented in wp-includes/category-template.php */
    		$cat_name = apply_filters(
    			'list_cats',
    			esc_attr( $category->name ),
    			$category
    		);
    
    		// Don't generate an element if the category name is empty.
    		if ( ! $cat_name ) {
    			return;
    		}
    
     $link = '<img />term_id, 'wcct-tag-thumbnail-url', true ) . '"><a href="' . esc_url( get_term_link( $category ) ) . '" ';
    
    		if ( $args['use_desc_for_title'] && ! empty( $category->description ) ) {
    
    			$link .= 'title="' . esc_attr( strip_tags( apply_filters( 'category_description', $category->description, $category ) ) ) . '"';
    		}
    
    		$link .= '>';
    		$link .= $cat_name . '</a>';
    
    		if ( ! empty( $args['feed_image'] ) || ! empty( $args['feed'] ) ) {
    			$link .= ' ';
    
    			if ( empty( $args['feed_image'] ) ) {
    				$link .= '(';
    			}
    
    			$link .= '<a>term_id, $category->taxonomy, $args['feed_type'] ) ) . '"';
    
    			if ( empty( $args['feed'] ) ) {
    				$alt = ' alt="' . sprintf(__( 'Feed for all posts filed under %s' ), $cat_name ) . '"';
    			} else {
    				$alt = ' alt="' . $args['feed'] . '"';
    				$name = $args['feed'];
    				$link .= empty( $args['title'] ) ? '' : $args['title'];
    			}
    
    			$link .= '>';
    
    			if ( empty( $args['feed_image'] ) ) {
    				$link .= $name;
    			} else {
    				$link .= "<img />';
    			}
    			$link .= '</a>';
    
    			if ( empty( $args['feed_image'] ) ) {
    				$link .= ')';
    			}
    		}
    
    		if ( ! empty( $args['show_count'] ) ) {
    			$link .= ' (' . number_format_i18n( $category->count ) . ')';
    		}
    		if ( 'list' == $args['style'] ) {
    			$output .= "\t<li";
    			$css_classes = array(
    				'cat-item',
    				'cat-item-' . $category->term_id,
    			);
    
    			if ( ! empty( $args['current_category'] ) ) {
    				// 'current_category' can be an array, so we use <code>get_terms()</code>.
    				$_current_terms = get_terms( $category->taxonomy, array(
    					'include' => $args['current_category'],
    					'hide_empty' => false,
    				) );
    
    				foreach ( $_current_terms as $_current_term ) {
    					if ( $category->term_id == $_current_term->term_id ) {
    						$css_classes[] = 'current-cat';
    					} elseif ( $category->term_id == $_current_term->parent ) {
    						$css_classes[] = 'current-cat-parent';
    					}
    					while ( $_current_term->parent ) {
    						if ( $category->term_id == $_current_term->parent ) {
    							$css_classes[] =  'current-cat-ancestor';
    							break;
    						}
    						$_current_term = get_term( $_current_term->parent, $category->taxonomy );
    					}
    				}
    			}
    
    			$css_classes = implode( ' ', apply_filters( 'category_css_class', $css_classes, $category, $depth, $args ) );
    
    			$output .=  ' class="' . $css_classes . '"';
    			$output .= ">$link\n";
    		} elseif ( isset( $args['separator'] ) ) {
    			$output .= "\t$link" . $args['separator'] . "\n";
    		} else {
    			$output .= "\t$link<br />\n";
    		}
    	}
    }
7件の投稿を表示中 - 1 - 7件目 (全7件中)
  • このトピックに返信するにはログインが必要です。