サポート » 使い方全般 » 特定のタグを持つ場合のみ表示したい

  • カテゴリページにそのカテゴリに属する記事のサムネイルと、
    それぞれの記事につけたタグの内、
    ある特定のタグがある場合のみ、そのタグ名を表示したいです。
    試してみましたが、全てのタグが表示されてしまいました。

    <?php 
    $tags = get_the_tags(); 
    foreach ($tags as $tag): 
    ?>
    <?php 
    $params = array( 'apple', 'grape', 'orange', 'lemon', 'banana' );
    ?>
    <?php if ( $params = $tag->name )
    echo "FRUITS: ". $tag->name; 
    ?>
    <?php endforeach; ?>

    上記のコードだと、「りんご」や「オレンジ」以外につけている「グミ」や「チョコレート」などのタグも表示されてしまいました。
    何が間違えているのか教えて頂けますでしょうか?
    宜しくお願い致します。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • こんにちは

    if の条件式が違うようです。配列に文字列があるかなので in_array() あたりをつかうのがいいかと思います。

    if ( $params = $tag->name )

    if ( in_array( $tag->name, $params ) )

    トピック投稿者 kekejiji

    (@kekejiji)

    表示されました!ありがとうございます。
    もう一点だけお願いできますでしょうか?
    複数のタグが含まれた場合に
    $paramsの中から最初の一つだけを取り出すことは出来ますでしょうか?

    $params の配列でループ (foreach ( $params as $param )) 、$tags から検索 (array_search() など) してヒットしたら表示してループを抜けるようにすればできると思います。

    例:

    $the_tags = get_the_tags();
    if ( $the_tags ) {
    	$params = array( 'apple', 'grape', 'orange', 'lemon', 'banana' );
    	$tags = array_column( $the_tags, null, 'name' );
    	foreach ( $params as $param ) {
    		if ( isset( $tags[$param] ) ) {
    			$tag = $tags[$param];
    			echo esc_html( $tag->name );
    			break;
    		}
    	}
    }
4件の返信を表示中 - 1 - 4件目 (全4件中)
  • このトピックに返信するにはログインが必要です。