すべてではないですがまとめ。
WordPressのカテゴリーの問題
WordPressでは、一般的に広く理解されています分類としてのフォルダ分けのように、投稿が分類されているわけではありません。
記事ごとに、タクソノミーという付加情報があり、その分類の1つとしてカテゴリーがある、という考え方のようです。ですから、1つの投稿に、タグのように複数カテゴリーが設定できるのですね。フォルダの中に入れる、という考え方ではないようです。
とはいえ、管理画面や見た目としては、階層構造で表示されるため、どうも複雑になっている印象です。
複雑になっている具体的な例としては、こんな感じです。
たとえば、こちらのサイトの「エネルギー」というカテゴリーの記事一覧と、
その子カテゴリーである「わたしたち電力」でも、似たような記事がリストアップされることにお気づきいただけると思います。
WordPressでは、標準的なテンプレートなど、下位カテゴリーの記事も、上位カテゴリーページに表示してしまう仕様があるのです。
つまり、たとえば、こういう階層構造を持つサイトの場合、/category/aaa/ というカテゴリーページと、/category/aaa/bbb/ というカテゴリーページで同じ記事リストが表示されることになり、重複コンテンツと捉えられかねなくなるわけです。
親
L子aaa
L孫bbb
L記事1
L記事2
aaaカテゴリーページには、記事1と記事2へのリンクが表示
bbbカテゴリーページにも、記事1と記事2へのリンクが表示
これを解決したい場合は、カテゴリータグを、ごにょごにょする必要がある、というわけです。
ループの外でもOK
カテゴリーページ(category.php)でつかえます。あとは、てきぎ配列に、$child->parent とか指定して、データひっぱってくる、という感じ。これらの指定方法で検索していただければ、リファレンスページとか見つかるはずです。
get_category_children($cat)
そのカテゴリーに関するすべての情報を配列として取得。多次元、1次元の配列ではいるっぽい。
get_queried_object()
これも、カテゴリー情報が入ります。ただ、配列は1次元っぽいです。直後に、$genzai->nameとするといきなり名前とれたりします。
get_categories(配列)
get_category_childrenで取得した多次元の配列から、さらに配列を指定して、情報を取得します。
get_category_link
カテゴリーのリンクURLがわかります。
get_cat_id
カテゴリーIDがわかります。他にも$genzai->term_idとかしても取れるっぽいです。
get_cat_name
カテゴリー名がわかります。
ループ内で有効
<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?>
上記は、新着記事一覧やカテゴリー内記事一覧など、一覧させたいときに動かすループのお約束の記述ですよね。
そのループの中で動作すると思われるカテゴリー関連のタグです。
なお、上記のタグでも動作するものもありますと思われます。
get_the_category()
ループさせて表示させる投稿にかかわるカテゴリー情報を取得。取得後、$cat[0]->cat_ID とかしますと、その記事のカテゴリーIDとかわかります。
記事のカテゴリーIDを知るには、管理画面でもチェックできると便利。こちらのプラグインがオススメ。
>>WordPress › ShowID for Post/Page/Category/Tag/Comment « WordPress Plugins
the_category(‘ 区切り文字 ‘)
その投稿の属するカテゴリーを取得。複数あるときは区切り文字が適用されます。
query_posts
WordPressでは、表示設定で設定された表示件数しかループをしません。つまり、表示件数10件としている場合、たとえば、1~10件はそこに表示させたくない、しかし、11件目にその記事がある、といったとき、そこまでチェックが及びません。
あと、記事に複数カテゴリーを設定してしまうと、件数としてはカウントされるものの、主カテゴリーをそのカテゴリーにしていないと、件数としてカウントされてしまう、というのもハマリました。
そのときに、条件ごとにループ件数を指定できますのが、query_postsです。
>>特定カテゴリの表示や表示件数を制御するquery_postsの使い方|Wordpressでくビジネスサイトをつくろう【第13回】 | HTML5でサイトをつくろう
カテゴリーまわりで参考になった記事
とても参考になりました。ありがとうございました。
カテゴリーページを整理できるようになりますと、いっぽうで、親カテゴリーには記事はないけれど、子カテゴリーには記事がある、といったときの親カテゴリーページがスカスカになります。
ですので、そのときは、人気記事を表示させると良いかと。
人気記事を表示させるプラグインは、WordPress Popular Postsが有名ですが、テンプレート内に書くには指定の記述で。
◇カテゴリー内の記事数取得
>>WordPress 特定のカテゴリに属する記事(投稿)の数を取得する | doli blog
◇子カテゴリーを配列で取得、その配列数をカウントすれば子カテゴリー数がわかります。
>>親カテゴリに属する子カテゴリ一覧を表示する | Cat Speak
>>配列に含まれる項目数を取得する(count) – 配列関数 – PHP関数
◇人気記事を任意の場所にショートコードで挿入
>>これで自由自在!WordPress Popular Postsで人気記事を任意の箇所に表示する3つの方法(プラグイン使用)
◇カテゴリー移動など一括操作 ※階層表示されません。同一カテゴリー名は注意。
>>【WordPress】カテゴリの一括変更は「Batch Cat」プラグインで!標準機能ではできない移動もできるよ! | love guava!
カテゴリーを整理した結果
こんな感じに整理できました。
あとは、カテゴリーの管理画面でカテゴリー内記事が表示件数以上になって、ページングが発生してしまうようであれば、子カテゴリーを作り整理すればよいかと。
なお、カテゴリーページを装飾するために、カテゴリーの概要文にタグを装飾できるプラグインを入れるといいと思います。
>>WordPress › Rich Text Tags « WordPress Plugins
記事が増えるごとに、キュレーションのようにカテゴリーページを作る。
そして、同じ要領でタグページもまとめ的に運用できれば、ページ量産がかなり効率化されるものと思います。
・ ・ ・ ・ ・
>>安っ!アマゾンで半額以下になっている食品タイムセール
セール特設ページを見る
↓↓↓無料のニュースレターを配信中です