スラッグ指定した複数カテゴリの投稿記事を新しい順にリスト表示

カテゴリスラッグで指定した複数のカテゴリの投稿記事を、カテゴリ別に、投稿日が新しい順で、リスト表示する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;
?>

解説付き

<?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コードを実行する前の記事データを復活。
?>

出力例

下の表示例のように、カテゴリ別に、投稿記事へのリンク付き投稿記事タイトルを、順不同項目リスト形式で出力する。

表示例

出力する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>

スポンサード リンク

カテゴリー: WordPress, チュートリアル パーマリンク