サポート » プラグイン » Display postsでの親カテゴリーを非表示にする方法について

  • お世話になります。

    先日もこちらで同じ質問をさせていただいたのですが、Display postsにおいて、カテゴリーラベルを表示させたときに、親カテゴリーは表示させずにしたいと考えております。

    ショートコードで対応出来るのか、またfunctions.php等の加筆が必要なのか、ご教授いただけますと助かります。

    よろしくお願いします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • @osat99 さん

    こんにちは。
    おそらく、こちらのご質問に関連するものかと思いますが、回答内にあるコードのタームリンクを出力する箇所で、「親タームを持つ場合(=親タームではない場合)に出力する」という条件を付け加えればよいように思います。

    foreach ( $terms as $term ) {
    	$term_output[] = '<a href="' . get_term_link( $term, $category_display ) . '">' . $term->name . '</a>';
    }

    ↓↓↓

    foreach ( $terms as $term ) {
    	if ( $term->parent !== 0 ) {
    		$term_output[] = '<a href="' . get_term_link( $term, $category_display ) . '">' . $term->name . '</a>';
    	}
    }

    ※未検証です

    トピック投稿者 osat99

    (@osat99)

    ご教授ありがとうございます!

    ちなみに、

    add_filter( 'display_posts_shortcode_category_display', function( $category_display_text, $terms, $category_display, $original_atts ) {
    	$category_label = 'Posted in: ';
    	if ( isset( $original_atts['category_label'] ) ) {
    		$category_label = sanitize_text_field( $original_atts['category_label'] );
    	}
    
    	$term_output = array();
    	if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    		foreach ( $terms as $term ) {
    			$term_output[] = '<a href="' . get_term_link( $term, $category_display ) . '">' . $term->name . '</a>';
    		}
    		$category_display_text = ' <span class="category-display"><span class="category-display-label">' . $category_label . '</span> ' . implode( ' ', $term_output ) . '</span>';
    	}
    
    	return $category_display_text;
    }, 10, 4 );

    こちらのどの箇所へ加筆すればいいでしょうか?

    add_filter( 'display_posts_shortcode_category_display', function( $category_display_text, $terms, $category_display, $original_atts ) {
    	$category_label = 'Posted in: ';
    	if ( isset( $original_atts['category_label'] ) ) {
    		$category_label = sanitize_text_field( $original_atts['category_label'] );
    	}
    
    	$term_output = array();
    	if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    		foreach ( $terms as $term ) {
    	if ( $term->parent !== 0 ) {
    		$term_output[] = '<a href="' . get_term_link( $term, $category_display ) . '">' . $term->name . '</a>';
    	}
    }
    		$category_display_text = ' <span class="category-display"><span class="category-display-label">' . $category_label . '</span> ' . implode( ' ', $term_output ) . '</span>';
    	}
    
    	return $category_display_text;
    }, 10, 4 );

    こんな感じで合ってますでしょうか??

    それで大丈夫だと思いますが、インデントは揃えた方が良いです。

    トピック投稿者 osat99

    (@osat99)

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

    インデントとは、頭揃えのことですよね?
    すみません、詳しくなくて。

    こんな感じでよろしいのでしょうか?

    add_filter( 'display_posts_shortcode_category_display', function( $category_display_text, $terms, $category_display, $original_atts ) {
    	$category_label = 'Posted in: ';
    	if ( isset( $original_atts['category_label'] ) ) {
    		$category_label = sanitize_text_field( $original_atts['category_label'] );
    	}
    
    	$term_output = array();
    	if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    		foreach ( $terms as $term ) {
    	if ( $term->parent !== 0 ) {
    		$term_output[] = '<a href="' . get_term_link( $term, $category_display ) . '">' . $term->name . '</a>';
    		}
    	}
    		$category_display_text = ' <span class="category-display"><span class="category-display-label">' . $category_label . '</span> ' . implode( ' ', $term_output ) . '</span>';
    	}
    
    	return $category_display_text;
    	}, 10, 4 );

    以下が適切だと思います。

    <?php
    add_filter( 'display_posts_shortcode_category_display', function( $category_display_text, $terms, $category_display, $original_atts ) {
    	$category_label = 'Posted in: ';
    	if ( isset( $original_atts['category_label'] ) ) {
    		$category_label = sanitize_text_field( $original_atts['category_label'] );
    	}
    
    	$term_output = array();
    	if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    		foreach ( $terms as $term ) {
    			if ( $term->parent !== 0 ) {
    				$term_output[] = '<a href="' . get_term_link( $term, $category_display ) . '">' . $term->name . '</a>';
    			}
    		}
    		$category_display_text = ' <span class="category-display"><span class="category-display-label">' . $category_label . '</span> ' . implode( ' ', $term_output ) . '</span>';
    	}
    
    	return $category_display_text;
    }, 10, 4 );

    そもそものインデントについては、一度ご自身で調べてみて下さい。

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