ID指定した複数カテゴリの何れにも属していない投稿をリスト表示

カテゴリIDで指定した複数のカテゴリの何れにも属していない投稿記事を、投稿日が新しい順に、リスト表示するWordpress用PHPコード。カテゴリ名、投稿記事へのリンク付き投稿記事タイトルを出力する。

複数のカテゴリの何れにも属していない投稿記事を抽出するには、get_posts() 関数のカテゴリ引数の「category__not_in」に、カテゴリIDを配列で指定する。

サンプル・ソースコード

カテゴリIDが「1」と「2」の何れかのカテゴリに属していて、「3」と「4」のカテゴリの何れにも属していない投稿記事を、最大10件抽出し、順不同項目リスト表示する。

WordPress用PHPコード

<?php
global $post;
$tmp_post = $post;
?>
<ul>
<?php
$get_posts_args = array(
    'category__in' => array( 1, 2, ),
    'category__not_in' => array( 3, 4 ),
    'numberposts' => 10,
    'order' => 'DESC',
    'orderby' => 'date'
);
$postslist = get_posts( $get_posts_args );
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コードを実行する前の記事データを退避。
?>
<ul>
<?php
$get_posts_args = array(
    'category__in' => array( 1, 2 ), // カテゴリIDを配列で指定。
    'category__not_in' => array( 3, 4 ), // カテゴリIDを配列で指定。
    'numberposts' => 10, // 取得する最大投稿記事数を指定。
    'order' => 'DESC',
    'orderby' => 'date'
);
$postslist = get_posts( $get_posts_args );
    // 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

<ul>
    <li><a href="投稿記事のパイパーリンク">投稿記事タイトル</a></li>
    <li><a href="投稿記事のパイパーリンク">投稿記事タイトル2</a></li>
    <li><a href="投稿記事のパイパーリンク">投稿記事タイトル3</a></li>
</ul>

スポンサード リンク

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