カスタム投稿を取得時に、カスタム投稿に紐づいた複数のターム(カテゴリー)をソートして取得する方法
タクソノミーのすべてのタームを指定した順番で取得したい場合には、get_termsでパラメータを渡せるので、指定した順番で取り出せます。
但し、カスタム投稿に複数のタームが紐づいていた場合にこのタームをソートして取得する際のメモです。
タームを指定した順に取り出す方法
taxonomyのメタ情報にソート用のフィールドを追加。
例)イメージ
post type : popular
taxonomy名 : fruits
追加するメタ情報フィールド : sortnumber(ソート用の番号)
データ(ターム)名 | sortnumber |
---|---|
strawberry | 1000 |
grape | 2000 |
apple | 3000 |
orange | 4000 |
banana | 5000 |
melon | 6000 |
kiwi | 7000 |
: | : |
1 2 3 4 5 6 7 8 9 | $arg = array( 'hide_empty' => 0, 'parent' => 0, 'order'=>'ASC', 'orderby'=>'meta_value', 'meta_key'=>'sortnumber' ); $terms = get_terms('fruits', $arg); |
get_termsではパラメータが渡せるので、sortnumberが若い順番に取り出す事ができる。
→ OK
カスタム投稿取得ループ内で複数タームに紐づけられている場合
例)イメージ
カスタム投稿タイプ:popularの記事に、「melon」、「orange」、「apple」と複数のカテゴリ(ターム)が選択されている場合
通常、カスタム投稿に関連付けられたカテゴリー(ターム)を取得するためには、以下のget_the_termsを使って取得を行う。
(post idが指定できるため。)
1 | $tax_categories = get_the_terms($post->ID, 'fruits'); |
しかし、見てわかる通りソート用のパラメータの指定ができないため、指定した順で取り出す事ができない。
wp_get_post_termsで解決
詳細は以下です。
※https://wpdocs.osdn.jp/関数リファレンス/wp_get_post_terms
wp_get_post_termsでは、ソート用のパラメータが渡せるので、以下の様にする事でカスタム投稿に紐づいたカテゴリー(ターム)を指定した順番で取り出す事ができます。
1 2 3 4 5 6 | $term_sort_arg = array( 'orderby' => 'meta_value', 'order' => 'ASC', 'meta_key' => 'sortnumber' ); $tax_categories = wp_get_post_terms($post->ID, 'fruits', $term_sort_arg ); |
以上、皆さまのお役に立てれば幸いです。
WEB DESIGN全てお任せ!ホームページ制作
RishunTradingでは、日本にはないコンセプトや高いデザイン性をもったヨーロッパ製品の輸入販売、及び、Webサイト制作事業などをおこなっております。
「全てお任せ!ホームページ制作」は、ドメイン取得からサーバー設定、レスポンシブルデザイン(スマホ、タブレット対応)、SEO対策がすべて含まれたお得なホームページを制作するサービス商品です。
運用開始後に「Webサイト運用管理サービス(保守)」と組み合わせて購入しますと、メンテナンス、更新も含めてすべて弊社で実施しますので、お客様は安心して本業に集中する事ができます。
しかもなんと、「全てお任せ!ホームページ制作」は、¥100,000!で提供しております。
本業が忙しい中小企業様に大変ご好評を頂いている商品です。
独自ドメイン取得
サーバー開設&設定
レイアウト設計
レスポンシブルデザイン
(*1)検索エンジン最適化
(SEO対策)場所Maps
お問い合わせフォーム
SSL化
各種SNS連携
運用マニュアル