サポート » 使い方全般 » タグリストのカレント表示

  • 解決済 cdgcdg

    (@cdgcdg)


    こんにちは。
    どうぞよろしくおねがいします。

    ただいま、アーカイブページにタグリストを以下のように表示しています。

    <?php
            // パラメータを指定
            $args = array(
                'orderby' => 'name',
                'order' => 'ASC'
            );
            $posttags = get_tags( $args );
            
            if ( $posttags ){
                echo ' <ul class="tag-list"> ';
                echo '<li><a href="'.esc_url( home_url() ). '/aaaaaa">ALL</a></li>';
                foreach( $posttags as $tag ) {
                echo '<li><a href="'. get_tag_link( $tag->term_id ) . '">' . $tag->name . '</a></li>';
                }
                echo ' </ul> ';
            }
            ?>

    このループのliに選択中のタグに何かしらのclassを付与したいと思っているのです、どのようにしたらよろしいでしょうか。
    ご教授いただければと思います。
    よろしくおねがいします。

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

    こういう事でしょうか?

    foreach( $posttags as $tag ) {
    	echo '<li><a href="'. get_tag_link( $tag->term_id ) . '">' . $tag->name . '</a></li>';

    $tag_ids = ( $tags = get_the_tags() ) ? array_column( $tags, 'term_id' ) : null;
    foreach( $posttags as $tag ) {
    	$class = ( $tag_ids && in_array( $tag->term_id, $tag_ids ) ) ? ' class="current-tag"' : '';
    	echo '<li' . $class . '>・・・
    トピック投稿者 cdgcdg

    (@cdgcdg)

    ご返信ありがとうございます。
    とても嬉しいです!
    試してみたのですが、タグのアーカイブページにいくとすべてのliにclass=current-tagがついてしまうようです。

     <?php
            // パラメータを指定
            $args = array(
                // タグ名順で指定
                'orderby' => 'name',
                // 昇順で指定
                'order' => 'ASC'
            );
            $posttags = get_tags( $args );
            
            if ( $posttags ){
                echo ' <ul class="tag-list"> ';
                 echo '<li><a href="'.esc_url( home_url() ). '/aaaaa">ALL</a></li>';
                 
                $tag_ids = ( $tags = get_the_tags() ) ? array_column( $tags, 'term_id' ) : null;
                foreach( $posttags as $tag ) {
                    $class = ( $tag_ids && in_array( $tag->term_id, $tag_ids ) ) ? ' class="current-tag"' : '';
                    echo '<li' . $class . '><a href="'. get_tag_link( $tag->term_id ) . '">' . $tag->name . '</a></li>';
                }
                echo ' </ul> ';
            }
            ?>

    http://hogehoge.com/tag/XXXXX/
    http://hogehoge.com/tag/YYYYY/
    http://hogehoge.com/tag/ZZZZZ/

    XXXXXを閲覧中には、XXXXXのliにだけclassが付与されるようにしたいのですが、できるのでしょうか。
    大変お手数ですが引き続きどうぞよろしくおねがいします。

    • この返信は4年、 11ヶ月前にcdgcdgが編集しました。
    • この返信は4年、 11ヶ月前にcdgcdgが編集しました。

    タグのアーカイブページの場合は、グローバル変数の $tag に現在のタグのスラッグ名が格納されているので、これで判定することができます。

    ループより前に、

    $current_tag = $tag;

    変更前

    foreach( $posttags as $tag ) {
    	echo '<li><a href="'. get_tag_link( $tag->term_id ) . '">' . $tag->name . '</a></li>';

    変更後

    foreach( $posttags as $tag ) {
    	$class = ( $tag->slug == $current_tag ) ? ' class="current-tag"' : '';
    	echo '<li' . $class . '>・・・
    トピック投稿者 cdgcdg

    (@cdgcdg)

    できました!!
    ありがとうございます。
    本当にたすかりました!
    またどうぞよろしくお願いいたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「タグリストのカレント表示」には新たに返信することはできません。