Ich denke, dass ich jetzt verstehe, was Sie versuchen zu tun. Wenn Sie eine benutzerdefinierte Abfrage mit ausführen WP_Queryund das Limit so festlegen, dass nur 5 Posts pro Seite abgerufen werden, werden nur 5 Posts von der Abfrage abgerufen, und diese Abfrage enthält nur 5 Posts, ABER aus Gründen der Paginierung wird WP_Queryimmer noch die gesamte Datenbank durchlaufen und zählt alle Beiträge, die den Kriterien der Abfrage entsprechen.
Dies ist ersichtlich, wenn Sie sich die $found_postsund $max_num_pages-Eigenschaften der Abfrage ansehen . Nehmen wir ein Beispiel:
Sie haben 20 Beiträge, die zum Standardbeitragstyp gehören post. Sie benötigen nur die letzten 5 Beiträge ohne Paginierung. Ihre Anfrage sieht so aus
$q = new WP_Query( 'posts_per_page=5' );
var_dump( $q->posts ) Sie erhalten erwartungsgemäß die letzten 5 Beiträge
echo $q->found_posts werde dir geben 20
echo $q->max_num_pages werde dir geben 4
Die Auswirkungen dieser zusätzlichen Arbeit sind auf Websites mit nur wenigen Posts minimal. Dies kann jedoch teuer werden, wenn Sie eine Website mit Hunderten oder Tausenden von Posts betreiben. Dies ist eine Verschwendung von Ressourcen, wenn Sie immer nur die 5 neuesten Beiträge benötigen
Es gibt einen undokumentierten Parameter namens, no_found_rowsder boolesche Werte verwendet, mit denen Sie Ihre Abfrage bailen können, nachdem die 5 benötigten Posts gefunden wurden. Dadurch wird WP_Queryerzwungen, nicht mehr nach Posts zu suchen, die die Kriterien erfüllen, nachdem die Anzahl der abgefragten Posts abgerufen wurde. Dieser Parameter ist bereits eingebaut get_posts, deshalb get_postsist er etwas schneller als WP_Queryobwohl er get_postsverwendet wirdWP_Query
Fazit
Wenn Sie keine Paginierung für eine Abfrage verwenden, ist es immer ratsam, 'no_found_rows=true'in Ihrer Abfrage die Dinge zu beschleunigen und Ressourcen zu verschwenden.
'posts_per_page=5'