【WordPress】「Custom Field Suite」のループを入力した日付順に表示する方法(昇順・降順)
WordPressで繰り返しフィールドを無料で作ることが出来る「Contact Field Suite」。
その「Custom Field Suite」のループを出力する順番を、最近入力したものを上に表示させるパターンに遭遇したのでまとめました。
通常のループの出力方法はこちら:
<?php $fields = CFS()->get( 'test_loop' ); ?> <?php if ($fields) ://test_loop が存在するとき ?> <?php foreach ( $fields as $field ):?> <div> <p><?php echo $field['test_loop_text']</p> </div> <?php endforeach; ?> <?php else : //test_loop が存在しないとき ?> <p>表示する内容は現在ありません。</p> <?php endif; ?>
これだと昇順に出力されて、最初に入力したものが一番上に表示されます。
ループは、よく会社のホームページの沿革などで使われ、その場合は昇順で問題なかったのですが、先日「お知らせ」的なものをこのパターンで表示することになり、後から追加した最近の出来事を一番上に表示したい・・となりました。
最後に追加した、最近入力したものから順に出力する、降順に出力するには、下記の方法で出力できます!
<?php $fields = CFS()->get( 'test_loop' ); ?> <?php if ($fields) ://test_loop が存在するとき ?> <?php foreach ( array_reverse($fields) as $field ):?> <div> <p><?php echo $field['test_loop_text']</p> </div> <?php endforeach; ?> <?php else : //test_loop が存在しないとき ?> <p>表示する内容は現在ありません。</p> <?php endif; ?>
変更した箇所は、
「 foreach ( $fields as $field ) 」部分を、「 array_reverse($fields) as $field ) 」と変更した部分です。
「 array_reverse() 」で、降順に表示できます。
※「Contact Field Suite」の使い方は以前に記載したのですが、内容がわかりにくいので、また書き直します・・。以前まとめた内容はこちらです。
この記事へのコメント
はじめまして!
Custom Field Suiteの使い方を勉強しており、こちらのサイトに辿り着きました。
現在、ループを出力する順番を、各ループに日付フォーマットを使用して入力した「日付」でソートする方法を探しており、つまづいています。
お忙しいところ恐縮ですが、方法がございましたら、教授いただけないでしょうか?
どうぞよろしくお願いいたします。
はじめまして!
この記事がわかりやすいかなと思います。
https://office7f.com/2014/12/18/wordpress-meta-query/
記事は期間限定のクエリを使っていますが、並べ替えだけならその部分はいらないと思います。
ありがとうございます!
教えていただいた参考ページでは、勉強不足で実現できなかったのですが、「array_multisort」で実現できました。「array_reverse」がヒントになりました。
お忙しいところどうもありがとうございました!