WP_Query, pre_get_posts und offset

Ich kann mich nicht WP_Query , warum der offset von der benutzerdefinierten WP_Query in der Seitenvorlage zur Hauptabfrage weitergeleitet wird.

Von meiner functions.php

 /** * ::: Filter 'Custom Post Type' Archive Main Query ::: */ add_action( 'pre_get_posts', 'filter_cpt_posts' ); function filter_cpt_posts( $query ) { if ( ! is_admin() && $query->is_main_query() && ! is_post_type_archive( 'cpt' ) ) { return $query; } else { // on is_post_type_archive( 'cpt' ) $query->set( 'offset', '1' ); return $query; } } 

Aus meiner Archiv-cpt.php :

  'cpt', 'posts_per_page' => 1, // number of posts to display 'offset' => 0 ) ); if ( $loop_recent_post->have_posts() ) { while ( $loop_recent_post->have_posts() ) { $loop_recent_post->the_post(); ?>   

und weiter unten:

  

Beiträge beginnen in der Hauptabfrage mit offset=0 .

Warum?

PS: Ja,

  • Ich habe gelesen, wann WP_query (), query_posts () und pre_get_posts zu verwenden – das ist der Ursprung warum ich gekommen bin, um Abfrage über pre_get_posts zu ändern,
  • und wp_reset_query() macht keinen Unterschied nach WP_Query , ich habe diese rec gefolgt.

Solutions Collecting From Web of "WP_Query, pre_get_posts und offset"

Es hilft Probleme zu schreiben.

Nachdem ich pre_get_posts ausführlich benutzt pre_get_posts , habe ich mich zu sehr auf diesen Bereich konzentriert, aber es war die if Klausel.

Gewechselt zu

 if ( ! is_admin() && $query->is_main_query() && ! is_post_type_archive( 'cpt' ) ) { return $query; } elseif ( ! is_admin() && $query->is_main_query() && is_post_type_archive( 'cpt' ) ) { // on is_post_type_archive( 'cpt' ) $query->set( 'offset', '1' ); return $query; } else { return $query; } 

Alles funktioniert gut. Ich mag pre_get_posts .