カテゴリスラッグで指定した複数のカテゴリの投稿記事を、カテゴリ別に、投稿日が新しい順で、リスト表示するWordpress用PHPコード。カテゴリ名、投稿記事へのリンク付き投稿記事タイトル、投稿記事の抜粋を出力する。
サンプル・ソースコード
カテゴリスラッグが「category-1-slug」と「category-2-slug」と「category-3-slug」のカテゴリに属している投稿記事を、最大10件抽出し、カテゴリ別にリスト表示する。
WordPress用PHPコード
<?php
global $post;
$tmp_post = $post;
$category_slugs = array(
'category-1-slug',
'category-2-slug',
'category-3-slug'
);
$category_ids = array();
foreach ( $category_slugs as $category_slug ) {
$idObj = get_category_by_slug( $category_slug );
$category_id = $idObj->term_id;
array_push( $category_ids, $category_id );
}
$numberposts = '10';
foreach ( $category_ids as $category_id ) {
?>
<h2><?php echo get_cat_name( $category_id ); ?></h2>
<ul>
<?php
$postslist = get_posts( "category=$category_id&numberposts=$numberposts&order=DESC&orderby=date" );
foreach ( $postslist as $post ) {
?>
<li><a href=<?php echo get_permalink( $post->ID ); ?>><?php echo $post->post_title; ?></a></li>
<?php
}
?>
</ul>
<?php
}
$post = $tmp_post;
?>
global $post;
$tmp_post = $post;
$category_slugs = array(
'category-1-slug',
'category-2-slug',
'category-3-slug'
);
$category_ids = array();
foreach ( $category_slugs as $category_slug ) {
$idObj = get_category_by_slug( $category_slug );
$category_id = $idObj->term_id;
array_push( $category_ids, $category_id );
}
$numberposts = '10';
foreach ( $category_ids as $category_id ) {
?>
<h2><?php echo get_cat_name( $category_id ); ?></h2>
<ul>
<?php
$postslist = get_posts( "category=$category_id&numberposts=$numberposts&order=DESC&orderby=date" );
foreach ( $postslist as $post ) {
?>
<li><a href=<?php echo get_permalink( $post->ID ); ?>><?php echo $post->post_title; ?></a></li>
<?php
}
?>
</ul>
<?php
}
$post = $tmp_post;
?>
解説付き
<?php
global $post;
$tmp_post = $post; // このPHPコードを実行する前の記事データを退避。
$category_slugs = array(
'category-1-slug',
'category-2-slug',
'category-3-slug'
); // カテゴリスラッグを配列で指定。
$category_ids = array();
foreach ( $category_slugs as $category_slug ) {
$idObj = get_category_by_slug( $category_slug ); // 指定したカテゴリスラッグから、get_category_by_slug 関数でカテゴリIDを取得。
$category_id = $idObj->term_id;
array_push( $category_ids, $category_id ); // カテゴリIDを配列に格納。
}
$numberposts = '10'; // 取得する最大投稿記事数を指定。
foreach ( $category_ids as $category_id ) { // 指定したカテゴリスラッグの数だけ繰り返す。
?>
<h2>
<?php
echo get_cat_name( $category_id );
// get_cat_name 関数で、カテゴリーIDからカテゴリー名を取得し表示。
?>
</h2>
<ul>
<?php
$postslist = get_posts( "category=$category_id&numberposts=$numberposts&order=DESC&orderby=date" );
// get_posts 関数で、投稿記事データを取得し、配列に格納
foreach ( $postslist as $post ) {
// 取得した投稿記事データを1つづつ表示
?>
<li><a href=<?php echo get_permalink( $post->ID ); ?>><?php echo $post->post_title; ?></a></li>
<?php
}
?>
</ul>
<?php
}
$post = $tmp_post; // このPHPコードを実行する前の記事データを復活。
?>
global $post;
$tmp_post = $post; // このPHPコードを実行する前の記事データを退避。
$category_slugs = array(
'category-1-slug',
'category-2-slug',
'category-3-slug'
); // カテゴリスラッグを配列で指定。
$category_ids = array();
foreach ( $category_slugs as $category_slug ) {
$idObj = get_category_by_slug( $category_slug ); // 指定したカテゴリスラッグから、get_category_by_slug 関数でカテゴリIDを取得。
$category_id = $idObj->term_id;
array_push( $category_ids, $category_id ); // カテゴリIDを配列に格納。
}
$numberposts = '10'; // 取得する最大投稿記事数を指定。
foreach ( $category_ids as $category_id ) { // 指定したカテゴリスラッグの数だけ繰り返す。
?>
<h2>
<?php
echo get_cat_name( $category_id );
// get_cat_name 関数で、カテゴリーIDからカテゴリー名を取得し表示。
?>
</h2>
<ul>
<?php
$postslist = get_posts( "category=$category_id&numberposts=$numberposts&order=DESC&orderby=date" );
// get_posts 関数で、投稿記事データを取得し、配列に格納
foreach ( $postslist as $post ) {
// 取得した投稿記事データを1つづつ表示
?>
<li><a href=<?php echo get_permalink( $post->ID ); ?>><?php echo $post->post_title; ?></a></li>
<?php
}
?>
</ul>
<?php
}
$post = $tmp_post; // このPHPコードを実行する前の記事データを復活。
?>
出力例
下の表示例のように、カテゴリ別に、投稿記事へのリンク付き投稿記事タイトルを、順不同項目リスト形式で出力する。
表示例
カテゴリ名1
カテゴリ名2
カテゴリ名3
出力するHTML
<h2>カテゴリ名1</h2>
<ul>
<li><a href="投稿記事のパイパーリンク">投稿記事タイトル</a></li>
<li><a href="投稿記事のパイパーリンク">投稿記事タイトル2</a></li>
<li><a href="投稿記事のパイパーリンク">投稿記事タイトル3</a></li>
</ul>
<h2>カテゴリ名2</h2>
<ul>
<li><a href="投稿記事のパイパーリンク">投稿記事タイトル</a></li>
<li><a href="投稿記事のパイパーリンク">投稿記事タイトル2</a></li>
<li><a href="投稿記事のパイパーリンク">投稿記事タイトル3</a></li>
</ul>
<h2>カテゴリ名3</h2>
<ul>
<li><a href="投稿記事のパイパーリンク">投稿記事タイトル</a></li>
<li><a href="投稿記事のパイパーリンク">投稿記事タイトル2</a></li>
<li><a href="投稿記事のパイパーリンク">投稿記事タイトル3</a></li>
</ul>
<ul>
<li><a href="投稿記事のパイパーリンク">投稿記事タイトル</a></li>
<li><a href="投稿記事のパイパーリンク">投稿記事タイトル2</a></li>
<li><a href="投稿記事のパイパーリンク">投稿記事タイトル3</a></li>
</ul>
<h2>カテゴリ名2</h2>
<ul>
<li><a href="投稿記事のパイパーリンク">投稿記事タイトル</a></li>
<li><a href="投稿記事のパイパーリンク">投稿記事タイトル2</a></li>
<li><a href="投稿記事のパイパーリンク">投稿記事タイトル3</a></li>
</ul>
<h2>カテゴリ名3</h2>
<ul>
<li><a href="投稿記事のパイパーリンク">投稿記事タイトル</a></li>
<li><a href="投稿記事のパイパーリンク">投稿記事タイトル2</a></li>
<li><a href="投稿記事のパイパーリンク">投稿記事タイトル3</a></li>
</ul>