development_creative

この記事は1年以上経過しています。

【WordPress】「ブログのトップに固定」を無視した投稿一覧を作りたい……。(wp_query)

こんなことはありませんか?

wp_queryを使って、wordpressに追加した投稿を取得する時ってありますよね。

特定の条件に基づいて投稿を取得する時に使用しますが、
投稿数(posts_per_page)を指定しているのに、数が合わないなと思う時がきっとあるはず。
(筆者はありました)

そういった時の備忘録として、記事に残します!

wp_queryとは?

簡単に表現すると、
「条件付きでWordpressの投稿を取得するループ」を作ることですね。

基本はこんな形式のコードになるかと思います。

<?php
// カスタムループを開始
$args = array(
    'post_type' => 'post', // 投稿タイプを指定
    'posts_per_page' => 5, // 取得する投稿の数
);

$query = new WP_Query($args);

// ループを開始
if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();
        // ここに投稿のコンテンツを表示するためのコードを追加
        the_title(); // タイトルを表示
        the_content(); // コンテンツを表示
    }
} else {
    // 投稿が見つからない場合の処理
    echo '投稿が見つかりません。';
}

// ポストデータのリセット
wp_reset_postdata();

// カスタムループを終了
?>

条件を指定している部分は、こちらの部分です。

// カスタムループを開始
$args = array(
    'post_type' => 'post', // 投稿タイプを指定
    'posts_per_page' => 5, // 取得する投稿の数
);

$query = new WP_Query($args);

取得する投稿の数を「5」と指定しているのに、吐き出される投稿の数が合わない……。

原因はこちら

wordpressの「ブログのトップに固定」が選択された投稿が原因でした。

こちらにチェックが入っていると、
post_per_page」で取得する投稿数を指定しても、無視されます。

解決策はこちら

パラメーター「’ignore_sticky_posts’ => 1,」を追記することで、
トップに固定の記事を無視することができます。

// カスタムループを開始
$args = array(
    'post_type' => 'post', // 投稿タイプを指定
    'posts_per_page' => 5, // 取得する投稿の数
    'ignore_sticky_posts' => 1, //ブログのトップに固定を無視
);

$query = new WP_Query($args);

すごく便利です。

皆さんもつまづいた時は、こちらを参考に。

Related ariticle

関連記事

TOP