カテゴリに関する複数の条件で抽出した投稿記事をリスト表示

カテゴリに関する複数の条件を指定して抽出した投稿記事を、投稿日が新しい順に、リスト表示するWordpress用PHPコード。投稿記事へのリンク付き投稿記事タイトル、投稿記事の抜粋を出力する。

複数のカテゴリIDの何れかのカテゴリに属している投稿記事を抽出するには、get_posts() 関数のカテゴリ引数の「category」に、カテゴリIDをカンマ区切りで指定する。カテゴリIDの数字の前に「-(マイナス)」を付けると、そのIDのカテゴリに属する投稿記事を除外する。

サンプル・ソースコード

カテゴリIDが「1」と「2」のいづれかのカテゴリに属していて、なおかつ、カテゴリIDが「3」のカテゴリに属していない投稿記事を、10件抽出する場合。

WordPress用PHPコード

<?php
global $post;
$tmp_post = $post;
$category_id = '1,2,-3';
$numberposts = '10';
?>
<dl>
<?php
$postslist = get_posts( "category=$category_id&numberposts=$numberposts&order=DESC&orderby=date" );
foreach ( $postslist as $post ) {
?>
    <dt><a href=<?php echo get_permalink( $post->ID ); ?>><?php echo $post->post_title; ?></a></dt>
        <dd><p><?php echo $post->post_excerpt; ?></p></dd>
<?php
}
$post = $tmp_post;
?>
</dl>

解説付き

<?php
global $post;
$tmp_post = $post; // このPHPコードを実行する前の記事データを退避。
$category_id = '1,2,-3';
    // カテゴリIDを指定する。
    // 複数のカテゴリを指定する場合は、カテゴリIDをカンマで区切る。
    // 特定のカテゴリに属している投稿記事を抽出したくない場合は、「-3」のように、カテゴリIDにマイナスを付ける。
$numberposts = '10'; // 取得する最大投稿記事数を指定する
?>
<dl>
<?php
$postslist = get_posts( "category=$category_id&numberposts=$numberposts&order=DESC&orderby=date" );
    // get_posts 関数で、投稿記事データを取得し、配列に格納
foreach ( $postslist as $post ) {
    // 取得した投稿記事データを1つづつ表示
?>
    <dt><a href=<?php echo get_permalink( $post->ID ); ?>><?php echo $post->post_title; ?></a></dt>
        <dd><p><?php echo $post->post_excerpt; ?></p></dd>
<?php
}
$post = $tmp_post; // このPHPコードを実行する前の記事データを復活。
?>
</dl>

出力例

下の表示例のように、投稿記事へのリンク付き投稿記事タイトル、投稿記事の抜粋を出力する。

表示例

抽出した投稿記事数分表示する。

投稿記事タイトル

投稿記事の抜粋

投稿記事タイトル2

投稿記事の抜粋

出力するHTML

<dl>
    <dt><a href="投稿記事のパイパーリンク">投稿記事タイトル</a></dt>
        <dd><p>投稿記事の抜粋</p></dd>
    <dt><a href="投稿記事のパイパーリンク">投稿記事タイトル2</a></dt>
        <dd><p>投稿記事の抜粋</p></dd>
</dl>

スポンサード リンク

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