WordPressの固定記事とそれ以外をそれぞれ取得するためのコード


WordPressで固定記事の扱いについて備忘を兼ねてメモ記事です。
理解すればなんてことないですが、
固定記事とそうでない記事を扱うには、初めは意外と設定がややこしいです。

  • 固定記事の取得
  • 固定記事を除く記事を取得

固定記事とそれ以外の記事をそれぞれ取得

$sticky = get_option('sticky_posts');   // 固定記事のidを取得

//
// 固定された記事を表示
//
if($sticky[0]){                         // 固定記事が取得できれば以下の処理
    $args = array(
        'post__in' => $sticky
    );
    if($my_query = new WP_Query($args)){
        while($my_query->have_posts()){
            $my_query->the_post();

            // 表示などの処理
        }
    }
}

//
// 固定以外の記事
//
$args = array(
    'ignore_sticky_posts' => 1,     // 固定記事を先頭に入れない
    'post__not_in' => $sticky       // 本来の位置からも削除する
);
if($my_query = new WP_Query($args)){
    while($my_query->have_posts()){
        $my_query->the_post();

        // 表示などの処理
    }
}