Verwenden von Offset in benutzerdefinierter Post-Typ-Abfrage

Ich verwende die folgende Abfrage für einen benutzerdefinierten Posttyp:

 -1, 'offset' => 20, 'post_type' => 'faqs' )); if($posts) { foreach($posts as $post) { echo '
  • ID) . '">' . get_the_title($post->ID) . '

  • '; /*

    ID) . '">' . get_the_title($post->ID) . '

    ' . get_the_excerpt($post->ID) . '

    '; */ } } wp_reset_query(); ?>

    Gibt es einen Grund, warum der Offset-Parameter nicht funktioniert? Vielleicht muss ich eine ganz andere Frage schreiben?

    Solutions Collecting From Web of "Verwenden von Offset in benutzerdefinierter Post-Typ-Abfrage"

    Der Grund für dieses Verhalten ist ziemlich einfach. Zuallererst müssen Sie wissen, dass get_posts verwendet, um Posts zu erhalten.

    Sehen wir uns die WP_Query-Implementierung an. In Zeile 1998 von query.php finden Sie:

     if ( $q['posts_per_page'] == -1 ) { $q['nopaging'] = true; 

    Dann in Zeile 2544 von query.php finden Sie:

     if ( empty($q['nopaging']) && !$this->is_singular ) { $page = absint($q['paged']); if ( !$page ) $page = 1; if ( empty($q['offset']) ) { $pgstrt = ($page - 1) * $q['posts_per_page'] . ', '; } else { // we're ignoring $page and using 'offset' $q['offset'] = absint($q['offset']); $pgstrt = $q['offset'] . ', '; } $limits = 'LIMIT ' . $pgstrt . $q['posts_per_page']; } 

    Es ist der einzige Teil, wo LIMIT für Beiträge hinzugefügt wird. Und wie Sie sehen können, wird es nur hinzugefügt, wenn kein nopaging gesetzt ist. Wenn also posts_per_page auf -1 gesetzt ist, wird der Paging-Teil der SQL-Abfrage nicht hinzugefügt.

    Was können Sie tun, um es zu bearbeiten? Sie können die numberofposts der numberofposts auf eine große positive Zahl setzen.

    Setzen Sie den Wert für ‘Zahlpfosten’ auf eine große positive Zahl. Wenn die Zahlpfeile auf -1 gesetzt sind, werden alle faqs zurückgegeben, die den Offset-Wert ignorieren.