特定カテゴリの投稿をまとめ記事として投稿する3つの方法
とある方がFacebookで「WordPressの特定カテゴリの投稿が一定の数まで溜まったら、それらをまとめ記事として自動で生成できちゃう仕組み」がないか心の声を吐露していたので、やり方を3つほどか考えてみました。
ただ初っ端から「自動生成」は諦めている--自動生成できてもリンクを作る仕組みが難しいと判断した--ので、
要求要件がバシッと決まっているわけではないため、若干のズレはあるかもしれませんけど、1つの方法論して見てもらえるといいかなと。あと、一応動作検証はしていますが、簡易的ものになるため、環境によっては少し手を入れないといけない場合があることをご了承ください。
特定カテゴリの投稿をまとめ記事として投稿する3つの方法
1、投稿ページに別テンプレートを適応させる
2、カスタムフィールドを使って、カテゴリを呼び出す
3、固定ページに別テンプレートを適応させる
「1」と「3」は投稿ページ、固定ページの違いはありますが、通常使っているテンプレートとは別にまとめ記事用のテンプレートを読みこませることで、特定のカテゴリを表示させる方法になります。
それぞれやり方は微妙に違いますが、テンプレートを分けて作れるため、柔軟性も高いですしコントロールも容易になると思います(また、固定ページのほうが簡単だったりします)。
「2」は通常使っているテンプレート(single.php)にカスタムフィールドの入力があった場合に表示させる条件分岐を入れる方法で、1つのテンプレートで対応できる反面テンプレートの作りが複雑になってしまうデメリットもあります。
以下、簡単ですが設定方法を紹介します。
いずれも「やり方」の流れだけになり、テンプレートの作成方法については言及していません、またスクリーンショットもなく、テキストのみですみません……
1、投稿ページに別テンプレートを適応させる
1、Template List Metaboxプラグインをインストール
2、Template List Metaboxの設定で「Post Types」の「投稿」にチェックを入れる
↑この設定で、投稿ページに別テンプレートを適用できるようになる
3、まとめ記事用のテンプレートを作成
4、テンプレートの上に「Template Name: テンプレート名」を記述(?php~?で囲う)
[php] <?php
/*
Template Name: テンプレート名
*/
?>[/php]
5、投稿ページでテンプレートを選択
これで作成した投稿ページがまとめ記事用のテンプレートで表示されます。
まとめ記事を複数作った場合、テンプレートも複数になる。
↓のカスタムフィールドを使って1テンプレートで対応するやり方もありますね。
2、カスタムフィールドを使って、カテゴリを呼び出す
1、Custom Field Templateプラグインをインストール
2、Custom Field Templateの設定で、以下の3つを設定
[php] [MatomeON]
type = radio
value = on
clearButton = true
[CategoryID]
type = text
size = 10
label = カテゴリID
[Count]
type = text
size = 35
label = 表示件数[/php]
3、テンプレート(single.php)に以下の記述を追記
[php] <?php if ( post_custom(‘MatomeON’) ) : ?>
<?php query_posts("cat=post_custom(‘CategoryID’)&showposts=post_custom(‘Count’)"); ?>
ここに特定のカテゴリの記事の読み込みを書く
<?php endif; ?>[/php]
4、まとめ記事を投稿する際に、カスタムフィールドのMatomeONのチェックをオンにし、カテゴリID、表示件数を入力する
これで作成した投稿ページがまとめ記事用のテンプレートで表示されます。
<少しだけ解説>
カスタムフィールドの設定で、[MatomeON]はまとめ記事かどうかの振り分けで、[CategoryID]は表示させたいカテゴリのIDを[Count]で表示件数を指定する。
それをテンプレート内のquery_postsに代入
[php]<?php query_posts("cat=post_custom(‘CategoryID’)&showposts=post_custom(‘Count’)"); ?>[/php]
呼び出しのところで
[php]<?php if ( post_custom(‘MatomeON’) ) : ?>
<?php endif; ?>[/php]
とすることで、MatomeONにチェックが入った時だけこの間にある内容を表示させるようにする。
3、固定ページに別テンプレートを適応させる
1、まとめ記事用のテンプレートを作成
2、テンプレートの上に「Template Name: テンプレート名」を記述(?php~?で囲う)
[php] <?php
/*
Template Name: テンプレート名
*/
?>[/php]
3、固定ページでテンプレートを選択
固定ページに関してはプラグインを使わなくても別テンプレートを使うことが可能になっているため、WordPress側での作業はとても簡単。
一気に書いてしまったため、若干(かなり?)ざっくりとなっていて、わかりづらい部分もあるかと思いますが、キーワードだけでも拾ってもらって参考にしていただけるといいかなと思います。
Sponsored Links