• 解決済 heppoko

    (@heppoko)


    投稿記事が属するカテゴリーを表示しつつ、特定のカテゴリーを除外したいと思い、
    下記ページを参考にしてうまくいきました。

    https://ja.forums.wordpress.org/topic/3215?replies=7

    しかし当初、「カテゴリー:<?php the_category( ‘|’ ); ?>」で出力していたのですが、これだと区切り文字を設定でき、かつ、最後に表示されるカテゴリ名の後ろには出力されませんでした。でもこれだと特定のカテゴリ除外が実現できません。

    これと同様のことを上記フォーラムのコードで実現は無理でしょうか?

    <?php
      $cats = get_the_category();
      $exclude = array(1);
      foreach((array)$cats as $cat){
        if(!in_array($cat->cat_ID, $exclude)){
          echo '<a href="' . get_category_link($cat->cat_ID) . '">' . $cat->cat_name . '</a>';
        }
    } ?>

    初めは単純に「」のあとに「|」と言うようにしたのですが、これだと最後に表示されるカテゴリの最後にも「|」がでてしまいますよね。CSSの:afterで表示させ、最後の項目は非表示に出来ないかとかも考えたのですが実現できず。

    何か手段はありませんでしょうか?
    ご教授いただければ幸いです。
    よろしくお願いいたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • nobita

    (@nobita)

    こんにちは

    CSSなら

    <style>
    	a:after{
    		content:' | ';
    	}
    	.wrap a:last-child:after{
    		content: '';
    	}
    	</style>
    
    <?php
    $cats	 = get_the_category();
    
    $exclude = array( 1 );
    echo '<p class="wrap">';
    foreach ( (array) $cats as $key => $cat ) {
    
    	if ( !in_array( $cat->cat_ID, $exclude ) ) {
    
    		echo '<a href="' . get_category_link( $cat->cat_ID ) . '">' . $cat->cat_name . '</a>' ;
    	}
    }
    echo '</p>';

    PHPなら、

    $cats	 = get_the_category();
    
    $exclude = array( 1 );
    
    foreach ( (array) $cats as $key => $cat ) {
    
    	$bar = '';
    
    	if ( !in_array( $cat->cat_ID, $exclude ) ) {
    
    		$next = $key + 1;
    
    		if ( isset( $cats[ $next ] ) ) {
    			$bar = ' | ';
    		}
    
    		echo '<a href="' . get_category_link( $cat->cat_ID ) . '">' . $cat->cat_name . '</a>' . $bar;
    	}
    }

    みたいな感じで出来ると思います。

    トピック投稿者 heppoko

    (@heppoko)

    回答ありがとうございました。実現することが出来ました!

    CSSで十分かと思ったのですが、「|」までリンクになってしまうのでPHPの方を利用させていただきました。
    「:last-child」のあとに「:after」をつけられると言うことを知らなかったのでこれも勉強になりました。

    PHPの方もとても参考になりましたです。重ね重ねありがとうございました!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「特定のカテゴリを除外し、区切り文字の表示も同時に行いたい」には新たに返信することはできません。