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

カスタム

wpphp_postcatlist

投稿記事内で記事一覧を表示したいときには、ショートコード機能を使います。

ショートコードとは、[ ]で囲まれたタグを記事本文に入力することで
表示の際、特定の文字やコードに置き換えてくれる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: 並び順(デフォルト:投稿日時順)

の4つです。

記事内に一覧を表示してみる

では、実際に記事本文に表示してみます。

<h3>新着情報</h3>

[list cat="3" limit="3"]

上の例ではカテゴリID3の記事を3件(投稿日付順の降順で)表示します。

wpphp_postcatlist_sample01

できました!記事内に一覧が表示されました。

関連記事を表示するときなどにも使えそうですね。

カスタム

関連記事