get_category_children

子カテゴリの有無を調べる時 get_category_children が使えないなら get_terms を使う

WordPressで4時間ハマった・・・。どうやらget_category_childrenが使えないケースがあるようですね。

アマゾンリンク

get_category_children

カテゴリーページで、その下に子カテゴリー(サブカテゴリー)があるかどうかを調べるとき、WordPressでは、get_category_children を使うらしい。

しかし、調べてみると、get_category_children は、そもそもブログのパーマリンクが ~/~/~/~となっていないと機能しない(URLがカテゴリースラッグで区切るタイプになってないと全部NULLが返ってくる)みたい。

そして、何と廃止予定だということ。いやはや困った・・・。

ただ、結果として、この廃止予定というのが幸いした。どうやら次に get_terms というタグが控えているらしく、結果としてはこれが使えたのだ。

ようは、get_terms(“category”, “child_of={$cat->term_id}”) としたときに、子カテゴリーが無ければ配列に何も入らない、これが使えた。なので、あとはifでemptyかどうか調べればOK。はまったけど、解決できて良かったよ・・・。

しかし、WordPressではサブカテゴリーや孫カテゴリーだけを表示させるとか、孫カテゴリー名を表示させないとか、カテゴリーページを普通のCMS的に使いたいとか、なんかそういうところはほとんど情報無いんだな、と思った。もう何年もWordPress使ってるけど、ホント奥が深い。