So passen Sie found_posts so an, dass Offset und Paginierung berücksichtigt werden

Soweit ist das der Code, den ich in meiner index.php Datei habe:

 $ppp, 'offset' => $offset, ); $offset_query = new WP_Query ( $args ); ?> 

An diesem Punkt funktioniert alles gut, außer dass es eine zusätzliche Seite ohne Posts auf der Site gibt. Anscheinend tritt dies auf, weil found_posts keinen Offset berücksichtigt und so denkt found_posts, dass es mehr Posts gibt und fügt eine zusätzliche Seite hinzu.

Also, wie würde ich den Offset vom found_posts Wert abziehen, so dass die zusätzliche Seite nicht auftritt. Oder, wie würde ich nur die extra Seite, die angezeigt wird loswerden.

Solutions Collecting From Web of "So passen Sie found_posts so an, dass Offset und Paginierung berücksichtigt werden"

Sie gehen das auf die harte Tour und den weniger effizienten Weg. Sie haben bereits einen Loop auf der Seite. Sie sollten das und das alleine benutzen können.

 if (have_posts()) { while (have_posts()) { the_post(); if (6 < $wp_query->current_post) { // formatting for your first six posts } else { // formatting for the other posts } } } 

Das ist es. Keine neue Abfrage erforderlich. Die Paginierung funktioniert ohne zusätzliche Anstrengung.

Vorbehalte:

  1. “Klebrige” Beiträge werden in deinen ersten sechs Posts enthalten sein.
  2. Die Anzahl der Posts ist für alle Posts gleich. Auf der ersten Seite haben Sie sechs unterschiedlich formatierte Posts plus Ihre posts_per_page minus 6 anderen Posts. Andere Seiten haben nur posts_per_page Beiträge.

Wenn Sie auf der ersten (vorderen) Seite eine zusätzliche Sechs wünschen, benötigen Sie diese in der functions.php Ihres Themes:

 function special_offset_pregp_wpse_105496($qry) { if ($qry->is_main_query()) { $ppg = get_option('posts_per_page'); $offset = 2; if (!$qry->is_paged()) { $qry->set('posts_per_page',$offset); } else { $offset = $offset + ( ($qry->query_vars['paged']-1) * $ppg ); $qry->set('posts_per_page',$ppg); $qry->set('offset',$offset); add_filter('found_posts', 'special_offset_pregp_fp_wpse_105496', 1, 2 ); } } } add_action('pre_get_posts','special_offset_pregp_wpse_105496'); function special_offset_pregp_fp_wpse_105496($found_posts) { return $found_posts - 2; } 

Ich denke, du suchst nach dieser Lösung

http://codex.wordpress.org/Making_Custom_Queries_using_Offset_and_Pagination

Das Problem

Offsets sind nützlich, da sie es einem Entwickler ermöglichen, eine bestimmte Anzahl von WordPress-Posts zu überspringen, bevor die Ausgabe gestartet wird.

Leider finden viele Entwickler heraus, dass die Einstellung eines Offset-Werts in ihren benutzerdefinierten WordPress-Abfragen den unangenehmen und möglicherweise schwerwiegenden Nebeneffekt des Brechens der Seitennummerierung hat.

Es gibt einen sehr guten Grund dafür, aber das Offset-Argument ist eigentlich der Wert, den WordPress verwendet, um die Paginierung selbst zu handhaben. Wenn ein Entwickler einen manuellen Offset-Wert festlegt, funktioniert die Paginierung nicht, da dieser Wert die automatische Anpassung des Offsets für eine bestimmte Seite durch WordPress außer Kraft setzt.

Die Lösung

Um einen Offset in WordPress-Abfragen zu verwenden, ohne die Paginierungsfunktionen von WordPress zu verlieren, müssen Sie einige grundlegende Paginierungsberechnungen manuell durchführen. Dies kann mit den folgenden zwei Haken erreicht werden:

pre_get_posts – Dieser Hook ermöglicht das Optimieren von Abfragen, bevor sie ausgeführt werden. Hier müssen wir sicherstellen, dass unser Offset nur auf die erste Seite angewendet wird.

found_posts – Erlaubt die Korrektur der Anzahl von Suchergebnissen in WordPress. Dadurch können wir sicherstellen, dass WordPress unseren Offset für andere Seiten als die erste Seite berücksichtigt.