ワードプレスで3階層のカテゴリテキストリンクマップをphpで作る(投稿数表示付)

親子孫の3階層カテゴリ

親カテゴリ、子カテゴリ、孫カテゴリの3階層のカテゴリテキストリンクマップです。意外とググっても出てこなかったので作成しました。見にくくてすみません。カテゴリが多いとおさまりがイマイチになるため、jQueryでアコーディオンなどを実装したほうが良い場合もありそうです。classやidを付けていますのでcssは適当につくってみてください。タクソノミーではなく、デフォルトのカテゴリです。基本的にhave_postsとthe_postの記事ループ外で使う事を想定したコードです。プラグインCategory Order and Taxonomy Terms Orderを使えば、順番入替も出来ます。カスタム投稿タイプではなく、デフォルト投稿タイプのデフォルトの階層構造有のカテゴリです。カスタム投稿タイプ、さらにカスタムタクソノミーとなる場合、php開発が複雑になるうえに、表示速度への悪影響も出やすいのでご注意ください。VPSやクラウドによるKUSANAGI運用の出番が来ると思います。

while文とforeach文ではforeachの方がメモリ消費も少なく速く、さらにforeachの参照渡しが一番速い様です。参照渡しの&やunsetは実装していませんので、適宜、気になる方は別途実装してご利用ください。カテゴリが多いワードプレスでは、トップページなどに配置すると役に立つと思います。尚、翻訳関数やエスケープは、使っておりません。必要な方は適宜実装してください。

孫カテゴリの未チェック親カテゴリ投稿数表示が問題

投稿数表示については、3階層目の孫カテゴリで投稿投稿数6などの場合、親やら子やらにレ点チェックが投稿画面で入れられていない記事は、何もしないと親と子では0件とワードプレス内部ではカウントされます。親か子で投稿数0の場合、条件分岐を付けて子や孫の投稿数を引っ張ってきて記事数を表示しています。ワードプレスのダッシュボード内の操作については「親カテゴリ自動チェック ワードプレス」でググるとjQueryの対策コードが出てきます。プラグインの場合はParent Category Togglerです。問題は過去の分で親や子にチェックがついていない孫や子です。1000記事越えなどの場合、手作業であればキーパンチャーに外注するしかないです。

SQLは面倒なのでphpで対応

DB構造確認して、SQL書いて、第1階層の親カテゴリ、第2階層の子カテゴリにレ点チェックを入れて合計数を表示するSQLは、親子の2階層まではググると出てきます。3階層の親子孫バージョンは海外にも無い様なのでおそらく自作するしかないです。コアのカテゴリウィジェットには、この点をカバーしたコードが予め実装されていますがClassの継承は結構ややこしく時間がもっと必要で、子テーマカスタマイズの場合、親テーマのフィルターフックによる読み込み順序の問題も発生します。クライアントへの使い方説明の手間も省きたい。そのため、php側で自作でカバーできるようにしました。記事数が多いワードプレスの場合、3階層まで対応できれば、それなりに役立つと思います。ATOM(エディタ)にコピペしていただくと、多少は見やすくなるかもしれません。そのうちClass化したい。

コメントを残す