カテゴリやタグの記事一覧を記事や固定ページに簡単に表示してくれる、List category postsというWordPressプラグインがあります。

WordPress › List category posts « WordPress Plugins

指定したカテゴリ(もしくはタグ)の記事タイトル一覧をリストとして出力してくれるので、ブログよりも業務用のサイトなどを作成する時に結構便利。
以前に少し記事にした事があります。

プラグインをインストールするとウィジェットが作成されます。
サイドバーなどに記事一覧を表示させたいような時は、そのままウィジェットエリアに設置するだけでよく、非常に楽。

ショートコードで好きな場所に表示する事が可能

また、ウィジェットを使用する以外にも各種パラメーターが用意されているので、ショートコードを書き込むことで任意の場所に希望の記事一覧を表示させる事が可能です。

パラメーターについてはこちらのページにサンプルが掲載されています。
WordPress › List category posts « WordPress Plugins

例えば

  • カテゴリID3に属する記事を

  • 5記事だけ

  • 上から順に古い記事→新しい記事

といった感じに並べたいのであれば

[catlist id=3  numberposts=5 orderby=date order=asc]

と記載すればOK。
記載した場所に記事一覧を表示できます。

テンプレートファイルにショートコードを書き込んでも反映されない

上記のような形で任意の場所に出力できますが、この場合の任意の場所とは投稿ページ内固定ページ内に限られます。直接テンプレートのphpファイルに書き込むと、このショートコードでは表示されません。

それで何が困るかと言えば、ウィジェットを使わず直接sidebar.phpなどのテンプレートにコードを書き込んで使用するような場合です。
やってみると、ショートコードを書き込んでもList category postsからは記事一覧が出力されません。

こんな感じに、ショートコードがそのまま表示されてしまいます。

解決法

テンプレートファイルに直接コードを書き込み、List category postsによる記事一覧を表示させたい時は、ショートコードを利用しますが、phpファイル上に出力されるように少しだけコードの書き方を変えます。

具体的にはこんな感じ

<?php echo( do_shortcode( 'ここにショートコード' ) ); ?>

例えば上記の例なら

<?php echo( do_shortcode( '[catlist id=3  numberposts=5 orderby=date order=asc]' ) ); ?>

このよう記載します。

これで記事内や固定ページ内以外、テンプレートファイルに直接書き込んでもList category postsからの出力が反映されるようになります。