He estado investigando en Google y WPSE y lo único que veo repetidamente es usar showposts, eso está en desuso.
Estoy familiarizado con WP_Query, y pensé que si me puse posts_per_pagea mi límite (es decir. 5), y nopagingque true, se convertiría en algo como " Ok, te voy a dar sólo 5 mensajes ". Pero esto no funciona.

¿Cómo puedo hacer esto?

'posts_per_page=5'found_postspropiedad, dice un número mayor que 5. Quiero que mi consulta contenga solo 5 publicaciones. ¿Es posible? @PieterGoosennopagingparámetro, establecerlo en verdadero significa obtener todas las publicacionesnopagingparámetro, se obtiene el valor predeterminadofalse, por lo que la portada muestra 5 publicaciones, pero la consulta contiene más. Agrego una imagen a la pregunta.Respuestas:
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ívar_dump( $q->posts )le dará las últimas 5 publicaciones como se esperabaecho $q->found_postsTe regalaré20echo $q->max_num_pagesTe regalaré4El 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á aWP_Queryno buscar más publicaciones sobre los criterios después de que haya recuperado la cantidad de publicaciones consultadas. Este parámetro ya está integradoget_posts, es por eso queget_postses un poco más rápido queWP_Queryaunqueget_postsusaWP_QueryConclusió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.fuente
Después de la conversación con @Pieter Goosen sobre los comentarios de la pregunta, creo que puedo responderla y explicar mi error.
La clave es que
found_postsme estaba confundiendo. Creo que ese número son las publicaciones recuperadas pero no lo es. Es la cantidad de publicaciones que coinciden con los criterios . Es como siWP_Querytuvieran 2 partes: una para encontrar (todas) las publicaciones y otra para buscar el contenido, cuando verifica lospaginationparámetros. Entonces, tenemos la$post_countpropiedad que es el número de publicaciones recuperadas (dice el CodexThe number of posts being displayed), que por supuesto es igual al número en elposts_per_pageparámetro y el número de elementos en la$postspropiedad de matriz.Entonces
WP_Queryno está haciendo ningún trabajo inútil, como pensé ^^Espero que esto ayude a otros!
fuente
Ok, le permite tener un tipo de publicación llamado 'blog_posts', y desea obtener 5 publicaciones de ese tipo de publicación. Aquí está lo que tú necesitas hacer
La consulta anterior devolverá 5 publicaciones del tipo 'blog_posts', si no es un tipo de publicación personalizado, simplemente reemplace de esta manera
'post_type' => 'posts',si desea recuperar todas las publicaciones y luego reemplace de esta manera'posts_per_page' => '-1',, para más detalles Consulta WPfuente
Sé que @ user1750063 ha mencionado el código pero intente esto
fuente
idno es válido comoorderbyvalor ypaginationes un parámetro no válidopaginationNo es un parámetro válido. Quieres decir'nopaging' => true? En caso afirmativo, obtendré TODAS las publicaciones. Eso no es lo que quiero. @PieterGoosen Creo que quiere decirID.ID, noid