「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」の続編にあたり、PHPの「データ構造」(配列とオブジェクト)について解説します。
配列やオブジェクトは、頭の中で考えるだけでは、イメージがつかみにくいです。本書では図を多用して、配列やオブジェクトをなるべく分かりやすく解説することを心がけました。
Kindle本で、定価250円です。
SuperSortプラグインでカテゴリアーカイブにサブカテゴリの記事も出力する
先日、SuperSortプラグインに対し、以下のようなご質問をいただきました。
- カテゴリアーカイブで、サブカテゴリも含めて記事を出力したい
- 記事はカテゴリごとにまとめて、カテゴリごとに何らかの文章(カテゴリ名等)を出力したい
上記のようなことは、タグの組み合わせを工夫すれば可能です。
その方法を解説します。
MTSubCategoriesタグとの組み合わせ
サブカテゴリの一覧を出力するタグとして、MT標準のMTSubCategoriesタグがあります。
このタグをカテゴリアーカイブテンプレート内で使うと、各カテゴリのサブカテゴリを順次出力することができます。
例えば、カテゴリの構造が以下のようになっているとします。
- カテゴリA
- カテゴリA-1
- カテゴリA-2
- カテゴリA-3
- カテゴリB
- カテゴリB-1
- カテゴリB-2
- カテゴリB-3
この状況で、カテゴリAのカテゴリアーカイブページを再構築するとします。
また、カテゴリアーカイブテンプレートにMTSubCategoriesタグが含まれているとします。
すると、このMTSubCategoriesタグでは、カテゴリAより下の階層(カテゴリA-1など)のカテゴリの一覧が出力されます。
さらに、MTSubCategoriesタグに「include_current="1"」のモディファイアを加えると、下の階層のカテゴリに加えて、そのカテゴリ自身も出力することができます。
例えば、カテゴリアーカイブテンプレートに<MTSubCategories include_current
="1">のタグが含まれているときに、カテゴリAのカテゴリアーカイブページを再構築するとします。
この場合、このMTSubCategoriesタグでは、カテゴリAと、それより下の階層のカテゴリの一覧が出力されます。
MTSubCategoriesタグとMTSortedEntriesタグを組み合わせる
MTSubCategoriesタグのブロックの中で、MTSortedEntriesタグを使うことができます。
この性質を利用すれば、冒頭にあげたようなカテゴリアーカイブを出力することができます。
具体的には、カテゴリアーカイブテンプレートの中で、ブログ記事一覧を出力する部分を、以下のようにします。
<MTSubCategories include_current="1" sort_method="SortCatFld::Sort"> カテゴリの情報を出力する処理 <MTSortedEntries> カテゴリ内の個々のブログ記事を出力する処理 </MTSortedEntries> <MTSubCatsRecurse> </MTSubCategories>
例えば、MT 4.2の標準テンプレートセットの場合、カテゴリアーカイブテンプレートのブログ記事一覧の部分を、以下のよう変えると良いでしょう。
<MTSubCategories include_current="1" sort_method="SortCatFld::Sort"> <div>カテゴリ「<MTParentCategories glue=":"><MTCategoryLabel></MTParentCategories>」の記事</div> <MTSortedEntries> <$MTInclude module="ブログ記事の概要"$> </MTSortedEntries> <MTSubCatsRecurse> </MTSubCategories>