カテゴリに関する複数の条件を指定して抽出した投稿記事を、投稿日が新しい順に、リスト表示する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>
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>
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>
出力例
下の表示例のように、投稿記事へのリンク付き投稿記事タイトル、投稿記事の抜粋を出力する。
表示例
抽出した投稿記事数分表示する。
出力するHTML
<dl>
<dt><a href="投稿記事のパイパーリンク">投稿記事タイトル</a></dt>
<dd><p>投稿記事の抜粋</p></dd>
<dt><a href="投稿記事のパイパーリンク">投稿記事タイトル2</a></dt>
<dd><p>投稿記事の抜粋</p></dd>
</dl>
<dt><a href="投稿記事のパイパーリンク">投稿記事タイトル</a></dt>
<dd><p>投稿記事の抜粋</p></dd>
<dt><a href="投稿記事のパイパーリンク">投稿記事タイトル2</a></dt>
<dd><p>投稿記事の抜粋</p></dd>
</dl>