質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

1884閲覧

ターム別に表示されたカスタム投稿一覧ページでタームの順番を変更したい

kkang

総合スコア14

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2022/02/01 16:56

同様の質問や解説ページはあったのですが、自分の環境でどうしても再現できず、質問させていただきます。

【実現したいこと】
カスタムタクソノミ―のタームごとに表示されるカスタム投稿一覧ページにおいて、表示されるタームの順番を任意に変更したい。

【現状】
管理画面で表示される順番(名前)で表示されます。これを説明に入力した順番で表示したいです。
イメージ説明

【やったこと】
調べながら下記のような支持をしております。

function.php

1function taxonomy_orderby_description( $orderby, $args ) { 2 if ( $args['orderby'] == 'description' ) { 3 $orderby = 'tt.description'; 4 } 5 return $orderby; 6} 7add_filter( 'get_terms_orderby', 'taxonomy_orderby_description', 10, 2 );

archive

1 <?php 2 $tax_name = 'カスタムタクソノミー'; 3 $posttype_name = 'カスタム投稿タイプ'; 4 $terms = get_terms( $tax_name); 5 foreach ( $terms as $term ) : 6 $args = array( 7 'post_type' => $posttype_name, 8 'parent' => 0, 9 'orderby' => 'description', 10 'tax_query' => array( 11 array( 12 'taxonomy' => $tax_name, 13 'field' => 'slug', 14 'terms' => $term->slug 15 ) 16 ), 17 'posts_per_page' => -1, 18 'no_found_rows' => true 19 ); 20 $query = new WP_Query($args); ?> 21 22     // 以下、表示ループ 23 24 < section > // タームセクション 25 <h2>タイトル</h2> 26  <ul> 27        <?php if ( $query->have_posts() ) : ?> 28  <?php while ( $query->have_posts() ) : $query->the_post();?> 29          <li> 30            // 一覧記事 31         </li> 32        <?php endwhile;?> 33        <?php wp_reset_postdata(); ?> 34   <?php endif; ?> 35       </ul> 36      < /section > 37<?php endforeach; ?>

var_dump($terms)の結果はやはり、名前順で出ており、descriptionでのソートができていません。

どんな可能性があるのかご教示いただきたく存じます。

何卒よろしくお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。
順番を指定する

array( 'parent' => 0, 'orderby' => 'description' )

の位置が間違っていました。

タクソノミーを取得するときに必要なので、正しくは下記ですね。

<?php $tax_name = 'カスタムタクソノミー'; $posttype_name = 'カスタム投稿タイプ'; $terms = get_terms( $tax_name, array( 'parent' => 0, 'orderby' => 'description' ) ); foreach ( $terms as $term ) : $term_name = $term->name; $args = array( 'post_type' => $posttype_name, 'taxonomy' => $tax_name, 'term' => $term->slug, 'posts_per_page' => -1, 'no_found_rows' => true ); $query = new WP_Query($args); ?>

投稿2022/02/02 14:21

編集2022/02/02 14:22
kkang

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問