• 解決済 salut_mby

    (@salut_mby)


    お世話になります。

    single.phpにて投稿のタグを
    ・投稿数が多い順
    ・5件のみ表示
    にしたいと思っています。

    get_the_tags(‘orderby=count&order=DESC&number=5’)
    みたいな感じでできたらいいなと思ったのですができないようなので、
    下記のURLを参考にさせて頂きました。
    https://ja.forums.wordpress.org/topic/5566?replies=12

    <?php
     $taglist = get_the_tags();
     $cnt = 0;
     foreach($taglist as $val){
       $tag_list[$cnt]['name'] = $val -> name;
       $tag_list[$cnt]['slug'] = $val -> slug;
       $tag_list[$cnt]['count'] = $val -> count;
       $cnt++;
     }
     foreach($tag_list as $key => $row){
     $sort[$key] = $row["count"];
     }
     array_multisort($sort,SORT_DESC,$tag_list);
     ?>
     <?php foreach($tag_list as $val): next($tag_list); ?>
     <a href="<?php bloginfo(url); ?>/tag/<?php echo $val['slug'];?>/"><?php echo $val['name'];?></a>
     <?php endforeach; ?>

    見よう見まねで投稿数が多い順だけはどうにか表示できるようになったのですが、
    さらに5件のみ表示とするにはどのように書いたらいいのでしょうか?
    ご教示いただけますと幸いです。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • タグそのものを 5 件表示と言うことであれば、
    array_multisort($sort,SORT_DESC,$tag_list);
    の後に、配列の先頭から5件だけ取得して、残りは切り捨てるという実装で良いかと思います。

    array_multisort($sort,SORT_DESC,$tag_list);
    $tag_list = array_slice($tag_list, 0, 5);
    ?>
    
    <?php foreach($tag_list as $val): next($tag_list); ?>
        <a href="<?php bloginfo(url); ?>/tag/<?php echo $val['slug'];?>/"><?php echo $val['name'];?></a>
    <?php endforeach; ?>
    トピック投稿者 salut_mby

    (@salut_mby)

    Toro_Unit (Hiroshi Urabe)さま

    ご丁寧にありがとうございます!

    お陰様でやりたい通りのことが実現できました。

    array_sliceという関数を初めて知りました。
    とても勉強になりました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「投稿のタグの表示について」には新たに返信することはできません。