Creo que ahora entiendo lo que estás tratando de hacer. Cuando ejecuta una consulta personalizada WP_Queryy 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_Querytodaví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_postsy $max_num_pagesde 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_rowsque 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_Queryno 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_postses un poco más rápido que WP_Queryaunque get_postsusaWP_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'