Press "Enter" to skip to content

Twenty Tenテーマのカスタマイズ!トップページに表示する記事をカテゴリ別に制御してみた。

WordPressのテーマをTwenty Tenに移行してから、テーマファイルの記述がこれまでと微妙に異なるので戸惑っていましたが、トップページの表示方法を少しカスタマイズしてみました。

通常の投稿だけでなくニュース等のクリッピング記事も記録していきたいと思っていたのですが、そうするとトップページを埋め尽くしてしまう為、特定のカテゴリの記事だけを表示しないようにしてみました。

トップページの新着は、index.phpのこの部分で動いています。

get_template_part( 'loop', 'index' );

これを以下のように書き換えます。
(この場合、カテゴリ18以外を表示)

query_posts('cat=-18');
get_template_part( 'loop', 'index' );
wp_reset_query();

すると、トップの新着にクリッピング関連の記事が表示されなくなります。

ただ、そのままだとクリッピング関連の記事がまったくわからなくなってしまうので、これらはサイドバーに出してみることに。

新着記事は、「loop.php」で動いているので、これをコピーして「loop_side.php」を作成。余分なコードを取り除いてシンプルな新着表記にします。

で、これを「sidebar.php」の中で呼び出せばいいのですが、サイドバーはウィジェットで全て管理したいので、「Executable PHP widget」というプラグインをインストール。

ウィジェットにPHPを含むコードを自由に追加することができます。
そこで、以下のソースを追加。

query_posts('cat=18&showposts=5');
get_template_part( 'loop_side', 'index' );
wp_reset_query();

カテゴリ18の記事を5件だけ「loop_side.php」に書かれた内容で表示するようになります。

デザインはまだ調整が必要ですが、動作は思い通りになったと思います。
これを流用すれば、特定のカテゴリのサムネイル写真だけを表示したりするのも簡単そうですね。
今度やってみます。

※追記

上記の方法だと、2ページ目以降に移動した場合でも常に最新の記事しかでなくなっていました。
そこで、

query_posts('cat=-18');

の部分を

query_posts('cat=-18&paged='.$paged);

のように変えることで2ページ目以降の動きが正常に直りました。

Be First to Comment

Popular Posts