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

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

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

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

Q&A

1回答

1405閲覧

wordpressの管理画面で一部のカテゴリーが子カテ、親カテと表示されてしまう。

maturyo

総合スコア7

WordPress

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

0グッド

0クリップ

投稿2020/05/08 03:47

編集2020/05/11 00:05

先日ワードプレスを使ったサイトの管理を任されたのですが、管理画面で一部のカテゴリーの表示が逆になっていました。

タイトル      カテゴリー
記事のタイトル  親カテゴリー,子カテゴリー1
記事のタイトル  親カテゴリー,子カテゴリー2
記事のタイトル  親カテゴリー,子カテゴリー3

↑みたいに普通なら表示されるはずが一部のカテゴリーだけ表示が逆になっていました。

タイトル      カテゴリー
記事のタイトル  子カテゴリー1,親カテゴリー
記事のタイトル  親カテゴリー,子カテゴリー2
記事のタイトル  親カテゴリー,子カテゴリー3

↑このような感じです。

get_the_categoryなどで、categoryを取得しても子カテゴリー1だけ順番が逆になっていました。

今まで経験しなかったことで、調べても該当するような記事がでてきません。
どなたな同じような問題にあたったことがあるかたはございますでしょうか。
宜しくお願い致します。

カテidとスラッグの情報を記載。
親カテのidが2でスラッグはpro
子カテ1のidは3スラッグはmethod
子カテ2のidは4スラッグはtime
子カテ3のidは5スラッグはplace
となっております。
カテid1は未分類となっております。

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

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

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

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

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

CHERRY

2020/05/10 05:33

各カテゴリーのカテゴリーID やスラッグは、どうなっているのでしょうか?
maturyo

2020/05/11 00:04

お返事遅れてしまい申し訳ございません。 親カテのidが2でスラッグはpro 子カテ1のidは3スラッグはmethod 子カテ2のidは4スラッグはtime 子カテ3のidは5スラッグはplace となっております。 カテid1は未分類となっております。
guest

回答1

0

WP_Term_Query の 'orderby' の既定値が 'name' だからでは。

'name', 'slug', 'term_group', 'term_id', 'id', 'description', 'parent' とか'meta_value', 'meta_value_num' とかが使えるので pre_get_termsフックで書き換えたりもできると思います。

並び順を厳密に規定するなら 'description' とか Term meta に並び順のための情報を入れる必要があると思います。

【WP_Term_Query::__construct() | Method | WordPress Developer Resources】
https://developer.wordpress.org/reference/classes/wp_term_query/__construct/

投稿2020/05/11 00:42

kei344

総合スコア69606

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

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

maturyo

2020/05/11 01:39

add_action('pre_get_terms', 'pre_get_terms_custom', 10, 1); function pre_get_terms_custom($query){ $query_vars = $query->query_vars; $is_orderby = $query_vars['orderby'] == 'id'; } とfunctions.phpに記述したのですが、管理画面での表示順は変わりませんでした。
kei344

2020/05/11 01:54

add_action('pre_get_terms', 'pre_get_terms_custom', 10, 1); function pre_get_terms_custom($query){ $query->orderby = 'id'; } 書くならこうでは。
kei344

2020/05/11 01:57

あ、ちがうかも。
kei344

2020/05/11 01:58

add_action('pre_get_terms', 'pre_get_terms_custom', 10, 1); function pre_get_terms_custom($query){ $query_vars = $query->query_vars; $query_vars['orderby'] = 'id'; $query->query_vars= $query_vars; } こうかな。
maturyo

2020/05/11 02:09

add_action('pre_get_terms', 'pre_get_terms_custom', 10, 1); function pre_get_terms_custom($query){ $query_vars = $query->query_vars; $query_vars['orderby'] = 'id'; $query->query_vars= $query_vars; } 上記の記述に書き直し、wordpressのキャッシュを削除したのですが、だめでした。 DBとかの問題なんですかね、さっぱりわかりません。 試しに新しいカテゴリーを追加してみたのですが、そのカテゴリーも親子関係はしっかりしていたのですが、順番が逆になっていました。
kei344

2020/05/11 02:16 編集

名前順なので親子は特に関係ないです。 pre_get_termsを通っているか確認して、通っていないとか書き換えができないとかなら、他のフックを探してみてください。
maturyo

2020/05/11 02:18

かしこまりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問