タグ1つで記事内に特定カテゴリの記事一覧を表示する方法

投稿記事内で記事一覧を表示したいときには、ショートコード機能を使います。
ショートコードとは、[ ]で囲まれたタグを記事本文に入力することで
表示の際、特定の文字やコードに置き換えてくれるWordPressの便利機能です。
今回はこのショートコードを使って、記事本文に1つタグを追加するだけで
特定カテゴリの記事一覧を表示できるようにします。
記事のテンプレートに get_posts やらごにょごにょ書き入れる必要はありません。
functions.php の編集、作成
まずは functions.php を用意します。現在使っているテーマファイル内になければ、
同名ファイルを作成しましょう。
記事の中で特定カテゴリの一覧を表示するショートコードを作成
<?php
function get_category_posts($atts, $content = null)
{
extract(shortcode_atts(array(
'limit' => '4',
'cat' => '',
'order' => 'DESC',
'orderby' => 'post_date'
), $atts));
global $post;
$tmppost = $post;
$get_cat_posts = get_posts('numberposts='. $limit. '&order='. $order. '&orderby='. $orderby. '&category='. $cat);
$cat_list_html = '<ul>';
foreach ( $get_cat_posts as $post )
{
setup_postdata($post);
$cat_list_html .= '<li><a href="'. get_permalink(). '">'. the_title('', '', FALSE). '</a></li>';
}
$cat_list_html .= '</ul>';
$post = $tmppost;
return $cat_list_html;
}
add_shortcode('list', 'get_category_posts');
?>
引数を渡せるタイプのショートコードを作りました。
渡せるものは、
limit: 表示件数
cat: カテゴリID
order: 昇順か降順か(デフォルト: 降順)
orderby: 並び順(デフォルト:投稿日時順)
cat: カテゴリID
order: 昇順か降順か(デフォルト: 降順)
orderby: 並び順(デフォルト:投稿日時順)
の4つです。
記事内に一覧を表示してみる
では、実際に記事本文に表示してみます。
<h3>新着情報</h3> [list cat="3" limit="3"]
上の例ではカテゴリID3の記事を3件(投稿日付順の降順で)表示します。

できました!記事内に一覧が表示されました。
関連記事を表示するときなどにも使えそうですね。
関連記事






