「WordPressで学ぶPHP(1)変数・制御構造編」が発売されました。
「WordPressで学ぶPHP」シリーズの第1巻で、WordPressを通してPHPを学んでいく本です。
この本では、PHPの基本となる変数と制御構造について解説します。
Kindle本で、定価500円です。
続・ブログAのカテゴリアーカイブページにブログBの記事も出力する
先日の「ブログAのカテゴリアーカイブページにブログBの記事も出力する」の続編で、2つのバリエーションをご紹介します。
1.ブログAの各カテゴリのアーカイブページにブログBの記事を混在させて出力する
先日の記事は、ブログAのカテゴリAのカテゴリアーカイブページだけに、ブログBの記事を混在させて出力する例でした。
しかし、以下のように、ブログAのそれぞれのカテゴリアーカイブページに、ブログBの記事を混在させて出力したい場合もあります。
- ブログAのカテゴリAのアーカイブページには、ブログAのカテゴリAの記事とブログBの記事を混在して出力する
- ブログAのカテゴリBのアーカイブページには、ブログAのカテゴリBの記事とブログBの記事を混在して出力する
- ブログAのカテゴリCのアーカイブページには、ブログAのカテゴリCの記事とブログBの記事を混在して出力する
- 以下同様
この場合だと、ブログAのカテゴリアーカイブテンプレートで、MTEntriesタグのブロックの前に以下を挿入します。
<$mt:CategoryID setvar="cat_id"$>
<mt:SearchConditions entry_ids="eid1">
<mt:SearchConditionCategorySection>
<mt:SearchConditionCategoryID include_cat_ids="$cat_id">
</mt:SearchConditionCategorySection>
</mt:SearchConditions>
<mt:SearchConditions include_blogs="ブログBのID" entry_ids="eid2">
</mt:SearchConditions>
<mt:SearchConditions include_blogs="ブログAのID,ブログBのID">
<mt:SearchConditionSection>
<$mt:SearchConditionValues field="id" values="$eid1"$>
<$mt:SearchConditionUnion op="or"$>
<$mt:SearchConditionValues field="id" values="$eid2"$>
</mt:SearchConditionSection>
</mt:SearchConditions>
1~6行目は、各カテゴリのブログ記事を読み込む条件を指定する部分です。
1行目で、カテゴリのIDを変数cat_idに代入します。
そして、3~5行目で、カテゴリのIDが変数cat_idの値と一致しているブログ記事を読み込みます。
7~8行目は、ブログBの記事を読み込む条件を指定する部分です。
そして、9~15行目で、上記2つの条件のどちらかを満たすブログ記事を読み込みます。
2.一部のカテゴリだけブログBの記事を混在して出力する
すべてのカテゴリのアーカイブページではなく、一部のカテゴリのアーカイブページだけで、そのカテゴリの記事とブログBの記事を混在して出力したい場合もあります。
例えば、以下のような場合です。
- ブログAのカテゴリAのアーカイブページには、ブログAのカテゴリAの記事とブログBの記事を混在して出力する
- ブログAのカテゴリBのアーカイブページには、ブログAのカテゴリBの記事とブログBの記事を混在して出力する
- ブログAのカテゴリCのアーカイブページには、ブログAのカテゴリCの記事とブログBの記事を混在して出力する
- ブログAの上記以外のカテゴリのアーカイブページには、そのカテゴリの記事だけを出力する
この場合だと、上記のテンプレートの最初のMTSearchConditionsタグと、最後の閉じタグの間をMTIfタグのブロックで囲み、以下のように条件を追加します。
<$mt:CategoryID setvar="cat_id"$>
<mt:If test="grep { $_ == $cat_id } (カテゴリAのID,カテゴリBのID,カテゴリCのID)">
<mt:SearchConditions entry_ids="eid1">
<mt:SearchConditionCategorySection>
<mt:SearchConditionCategoryID include_cat_ids="$cat_id">
</mt:SearchConditionCategorySection>
</mt:SearchConditions>
<mt:SearchConditions include_blogs="ブログBのID" entry_ids="eid2">
</mt:SearchConditions>
<mt:SearchConditions include_blogs="ブログAのID,ブログBのID">
<mt:SearchConditionSection>
<$mt:SearchConditionValues field="id" values="$eid1"$>
<$mt:SearchConditionUnion op="or"$>
<$mt:SearchConditionValues field="id" values="$eid2"$>
</mt:SearchConditionSection>
</mt:SearchConditions>
</mt:If>
2行目のMTIfタグは、変数cat_id(再構築中のカテゴリのID)が、カテゴリA/カテゴリB/カテゴリCのどれかのIDと一致するかどうかを調べることを意味します。
なお、この例ではカテゴリが3つですが、4つ以上の場合も、それらのカテゴリのIDをコンマで区切って並べればOKです。
また、MTIfタグのtestモディファイアの詳細については、「testモディファイアの使い方」の記事をご参照ください。
