web-dev-qa-db-ja.com

最新の5つの投稿の後に4つの投稿を取得する方法

まあ、私は質問が少し混乱するかもしれないと思います。しかし、最初の5つの最近の投稿を無視して、最近の4つの投稿を取得したいのです。つまり、6、7、8、9番目の最近の投稿です。

2
Rigel Glen

簡単です。

WordPressは get_posts() という名前の関数を提供しています。基本的に、get_posts()はデフォルトで最新の5つの投稿を取得します。

4つの投稿を取得するには、最新の5つを無視して、numberpostsおよびoffsetパラメータを設定します - offsetは、スキップする投稿数を関数に指示します。

$args = array(
    'numberposts' => 4,
    'offset'      => 5,
    'orderby'     => 'post_date',
    'order'       => 'DESC',
    'post_type'   => 'post',
    'post_status' => 'publish'
);

$posts = get_posts( $args );

これで、日付順に並べられた4つの最新の投稿(最新の5つを無視)の配列ができました。

1
EAMann

あなたはoffsetパラメータを使うことができます - 'main loop'のためにpre_get_postsフック( この記事を見てください ):

add_action('pre_get_posts','wpse50761_alter_query');
function wpse50761_alter_query($query){

      if( $query->is_main_query() ){
        //Do something to main query
        $query->set('offset',5);
      }
}

またはその後の二次ループの場合:

 //Using get_posts
 $my_offset_posts = get_posts(array('offset'=>5));

 //Using WP_Query object
 $my_offset_query = new WP_Query( array('offset'=> 5) );

(もちろん、他の引数を引数配列に含めることができます)

1
Stephen Harris