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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2791閲覧

wordpressにてカテゴリの階層ごとの投稿記事数を取得したい

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/02/01 14:58

WordPressに関する質問です。
WordPressも初心者で、teratailさんも初利用です。
マナー違反等あればご指摘ください。
お手柔らかにお願いします(>_<)

###発生している問題
カテゴリの階層ごとの投稿記事数を取得したいのです。
各カテゴリの記事数ではないです。カテゴリの総数でもないです。
階層を縦断した形のカテゴリ数が欲しいのです。

現在、カテゴリをーを

種類(第1階層カテゴリ) ― 品目(第2階層カテゴリ) ― 品種(各投稿)

としています。
例として

・野菜
->キャベツ
->ピーマン
・くだもの
->りんご
->みかん
->いちご

このような形です。
このカテゴリの中に、各投稿が複数ある状態です。
たとえば「りんご」カテゴリの中には『ふじ』『紅玉』『むつ』の記事があるみたいに。

この時、品目(第2階層カテゴリ)の総数を知りたい場合は、どのようにすればよろしいでしょうか?
この例の場合ですと、答えは5となります。(キャベツ,ピーマン,りんご,みかん,いちご)
全体カテゴリ総数 - 第一階層カテゴリ数 かなぁと思ったのですが、
第一階層カテゴリ数が取れるなら第二階層カテゴリ数も取れますよね・・・。
どちらにしても第〇階層カテゴリ数、というものが取得できないのですが。

あいまいな質問で申し訳ありませんが、よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

第一階層カテゴリ数が取れるなら第二階層カテゴリ数も取れますよね・・・。

第一階層は parent0 なので取れる、という事情です。なので、第二階層のみという条件で数を数えるのであれば、第一階層を取得してそれを親とするカテゴリを取得して回るという実装になると思います。

PHP

1// 未テスト 2$first_cats = get_categories( array( 3 'hide_empty' => true // true/false 4 , 'parent' => 0 // 第一階層取得 5 , 'fields' => 'ids' // idのみ取得 6) ); 7// count( $first_cats ); // 第一階層取得 8 9$second_cats = array(); 10foreach( $first_cats as $f_cat ) { 11 $second_cats = array_merge( $second_cats, get_categories( array( 12 'hide_empty' => true // true/false 13 , 'parent' => $f_cat->term_id 14 , 'fields' => 'ids' // idのみ取得 15 ) ) ); 16} 17// count( $second_cats ); // 第二階層取得

【get_categories:WordPress私的マニュアル】
http://elearn.jp/wpman/function/get_categories.html

【get_categories() | Function | WordPress Developer Resources】
https://developer.wordpress.org/reference/functions/get_categories/

【get_terms() | Function | WordPress Developer Resources】
https://developer.wordpress.org/reference/functions/get_terms/

投稿2017/02/01 17:08

kei344

総合スコア69398

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

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

退会済みユーザー

退会済みユーザー

2017/02/02 13:20

遅くなりました!ごめんなさい! ありがとうございます。 この方法で第二階層の数を取得していますが、全体のカテゴリ数から第一階層の数を引いたものでも第二階層の数を取得できますよね? もちろん、第3階層以降はない、という前提ですが。
kei344

2017/02/03 03:29

その条件ならできますよ。 質問文に「第〇階層カテゴリ数」とあったので汎用的なものを回答したつもりです。 DBに「何階層目か」という情報は入っていなくて、「親は誰か」という情報しかありません。
退会済みユーザー

退会済みユーザー

2017/02/03 09:46

なるほどー 勉強になりました! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問