web-dev-qa-db-ja.com

アーカイブページに#6から#20までの投稿を表示する

私のクライアントは、ホームページに彼の最新の5つの投稿(抜粋)を表示し、続いて「もっと読む」リンクを表示します。アーカイブページで、彼は再び最新の5つの投稿を表示したくないが#6から#20までの投稿。

これどうやってするの?

1
JDRay

クエリにoffsetを追加し、値を5にすると、最初の5はスキップされます。

以下は同じコードスニペットです

$custom_args = array('post_type' => 'your custom post type name',
'posts_per_page' => '20',
'orderby' => 'id',
'offset'=>5,
'order' => 'ASC',);
$custom_query = get_posts($custom_args);
 foreach ($custom_query as $value) {
 //your data
  }
2
Adarsh

元のアーカイブクエリをフィルタリングできます。

function my_archive_query( $query ) {
  if ( $query->is_archive() && $query->is_main_query() ) {
    $query->set( 'offset', 5 );
    $query->set( 'posts_per_page', 20 );
  }
}

add_action( 'pre_get_posts', 'my_archive_query' );

より詳しい情報:

pre_get_postsフィルタ

is_archive条件タグ

1
Michael