Tengo este problema extraño. Quiero buscar todas las publicaciones que son de un tipo personalizado, aquí está mi fragmento.
$query = new WP_Query(array(
'post_type' => 'custom',
'post_status' => 'publish'
));
while ($query->have_posts()) {
$query->the_post();
$post_id = get_the_ID();
echo $post_id;
echo "<br>";
}
wp_reset_query();
Esto solo me da 6 de ellos, mientras que tengo más de 50 registros que coinciden con ese criterio en la base de datos. ¿Alguien puede decirme dónde me he equivocado?
¡Muchas gracias!
jono
'posts_per_page' => -1,
Agregue esto a la matriz de argumentos WP_QUERY y debería devolver todas las publicaciones de este tipo de publicación personalizada.
Esto obtiene todas las publicaciones de un tipo personalizado usando get_posts
:
$posts = get_posts([
'post_type' => 'custom',
'post_status' => 'publish',
'numberposts' => -1
// 'order' => 'ASC'
]);
-
Mucho mejor que WP_Query. Gracias 🙂
– robo
25 de enero de 2019 a las 3:49
-
@Rob: WP_QUery y get_posts son sutilmente diferentes. si necesita paginación, por ejemplo, get_posts no lo ayudará mucho (no puede saber el número total de publicaciones, por ejemplo).
– Brett
16 de agosto de 2019 a las 14:32
-
¡Gracias! Me salvaste el tiempo. 👍
– Imrán
11 ene a las 10:55
La cantidad de publicaciones para devolver se establece en configuración> lectura
Puede pasar la cantidad de publicaciones para que su consulta regrese usando.
'posts_per_page' => 'number of posts'
Nunca debes usar:
'posts_per_page' => -1
Es lento y no efectivo, si está hablando de velocidades de consulta SQL. Así que es mucho mejor usar algún número entero grande.
Este es un riesgo de rendimiento. ¿Qué pasa si tenemos 100.000 publicaciones? Esto podría bloquear el sitio. Si está escribiendo un widget, por ejemplo, y solo desea capturar todo un tipo de publicación personalizada, determine un límite superior razonable para su situación.
Más detalles aquí:
https://10up.github.io/Engineering-Best-Practices/php/#performance
Es recomendable utilizar un número entero en lugar de ‘-1’ Por ejemplo:
'posts_per_page' => 999999,
-
¿Por qué es? Debe dar un razonamiento para distinguirlo de la preferencia personal.
– Phil Healey
22 de julio de 2017 a las 19:45
-
Vaya… 6 votos negativos por sugerir una solución más óptima. Tiempo
'posts_per_page' => -1,
no está mal, pero puede causar problemas de rendimiento si la cantidad de registros es grande. Es óptimo usar un número como 999999 o cualquier otro número que sea más alto que su número máximo de registros en la base de datos.– tovishalck
11 de enero de 2019 a las 6:55
-
El impacto en el rendimiento no se debe a que WP de alguna manera se vuelve muy lento por el número -1… Es porque le está pidiendo a WP que obtenga una gran cantidad de publicaciones de la base de datos. Si considera que este número siempre es mayor que la cantidad de publicaciones, recuperará la misma cantidad de publicaciones que si la consulta hubiera
'posts_per_page' => -1
y, en consecuencia, el rendimiento será idéntico.– inwerpsel
27 de enero de 2021 a las 13:19
-
No responda por lo que no se pide en la pregunta. Si tiene una respuesta mejor, dé una razón válida.
– Raj
2 de diciembre de 2021 a las 19:46
-
¿Por qué es? Debe dar un razonamiento para distinguirlo de la preferencia personal.
– Phil Healey
22 de julio de 2017 a las 19:45
-
Vaya… 6 votos negativos por sugerir una solución más óptima. Tiempo
'posts_per_page' => -1,
no está mal, pero puede causar problemas de rendimiento si la cantidad de registros es grande. Es óptimo usar un número como 999999 o cualquier otro número que sea más alto que su número máximo de registros en la base de datos.– tovishalck
11 de enero de 2019 a las 6:55
-
El impacto en el rendimiento no se debe a que WP de alguna manera se vuelve muy lento por el número -1… Es porque le está pidiendo a WP que obtenga una gran cantidad de publicaciones de la base de datos. Si considera que este número siempre es mayor que la cantidad de publicaciones, recuperará la misma cantidad de publicaciones que si la consulta hubiera
'posts_per_page' => -1
y, en consecuencia, el rendimiento será idéntico.– inwerpsel
27 de enero de 2021 a las 13:19
-
No responda por lo que no se pide en la pregunta. Si tiene una respuesta mejor, dé una razón válida.
– Raj
2 de diciembre de 2021 a las 19:46