Creo que ahora entiendo lo que estás tratando de hacer. Cuando ejecuta una consulta personalizada WP_Query
y establece el límite para obtener solo 5 publicaciones por página, la consulta solo recuperará 5 publicaciones y esa consulta solo contendrá 5 publicaciones, PERO en aras de la paginación, WP_Query
todavía se ejecuta en toda la base de datos y cuenta todas las publicaciones que coinciden con los criterios de la consulta.
Eso se puede ver cuando observa las propiedades $found_posts
y $max_num_pages
de la consulta. Tomemos un ejemplo:
Tiene 20 publicaciones que pertenecen al tipo de publicación predeterminado post
. Usted solamente necesita los últimos 5 mensajes sin paginación. Su consulta se ve así
$q = new WP_Query( 'posts_per_page=5' );
var_dump( $q->posts )
le dará las últimas 5 publicaciones como se esperaba
echo $q->found_posts
Te regalaré 20
echo $q->max_num_pages
Te regalaré 4
El impacto de este trabajo adicional es mínimo en sitios con solo unas pocas publicaciones, pero esto puede ser costoso si está ejecutando un sitio con cientos o miles de publicaciones. Esto es un desperdicio de recursos si solo vas a necesitar las 5 últimas publicaciones
Hay un parámetro indocumentado llamado no_found_rows
que utiliza valores booleanos que puede usar para hacer que su consulta salga después de encontrar las 5 publicaciones que necesita. Esto forzará a WP_Query
no buscar más publicaciones sobre los criterios después de que haya recuperado la cantidad de publicaciones consultadas. Este parámetro ya está integrado get_posts
, es por eso que get_posts
es un poco más rápido que WP_Query
aunque get_posts
usaWP_Query
Conclusión
En conclusión, si no va a utilizar la paginación en una consulta, siempre es aconsejable 'no_found_rows=true'
en su consulta acelerar las cosas y ahorrar en el desperdicio de recursos.
'posts_per_page=5'