¿Cómo anular el número predeterminado de publicaciones para un bucle personalizado en WordPress?

7 feb 2011, 22:19:27
Vistas: 14.3K
Votos: 4

¿Es posible anular el número establecido de publicaciones de blog a mostrar por página (definido en Ajustes de Lectura en el administrador de WordPress)? Quiero hacer que un bucle personalizado que estoy usando muestre un número ilimitado de publicaciones.

0
Todas las respuestas a la pregunta 5
2
10

El argumento que controla cuántas publicaciones se muestran en la consulta es posts_per_page

<?php query_posts( array( 
                         'post_type' => 'post',
                         'posts_per_page' => -1 ) 
      ); 
?>

También hay que tener en cuenta que existe un error en la rama 3.0 que impide que el entero -1 muestre todas las publicaciones. Está corregido en la versión 3.1, pero una solución alternativa sería usar un número muy alto en lugar de -1

ver:

http://core.trac.wordpress.org/ticket/15150

7 feb 2011 23:13:58
Comentarios

Hay un error tipográfico en tu parámetro para posts_per_page. Tienes post_per_page en lugar de posts_per_page. (Intenté editar tu publicación, pero no tengo permisos de edición). ¡Muchas gracias!

user1462 user1462
7 feb 2011 23:29:35

Evita esta función, es muy mala para el rendimiento, causa muchos problemas con la paginación, etc. Usa pre_get_posts para modificar lo que se muestra en una página, y WP_Query si necesitas obtener publicaciones por otros motivos. Nunca uses query_posts

Tom J Nowell Tom J Nowell
3 abr 2020 18:55:11
0

Claro, modifica la consulta agregando:

<?php query_posts('post_type=post&numberposts=-1'); ?>

7 feb 2011 22:43:18
0

Eileen tiene razón, pero es mejor usar argumentos como un arreglo <?php query_posts( array( 'post_type' => 'post', 'numberposts' => -1 ) ); ?>

7 feb 2011 23:01:25
0

Tuve el mismo problema... Decidí agregar una variable personalizada y luego capturar esa variable durante pre_get_posts para establecer el query_var post_per_page:

function custom_query_vars_filter($vars) {
  $vars[] = 'post_per_page_override';
  return $vars;
}
add_filter( 'query_vars', 'custom_query_vars_filter' );


add_action( 'pre_get_posts', 'rc_modify_query_get_design_projects' );
function rc_modify_query_get_design_projects( $query ) {

if( $query->query_vars['post_per_page_override'] == '3') {
        $query->set('posts_per_page', '3');
    }
}

Luego fui más allá y lo hice obtener la cantidad exacta que deseas mostrar en la variable de consulta personalizada:

function custom_query_vars_filter($vars) {
  $vars[] = 'post_per_page_override';
  return $vars;
}
add_filter( 'query_vars', 'custom_query_vars_filter' );


add_action( 'pre_get_posts', 'rc_modify_query_get_design_projects' );
function rc_modify_query_get_design_projects( $query ) {

if( $query->query_vars['post_per_page_override']) {
        $customPPPlimit = $query->query_vars['post_per_page_override'];
        $query->set('posts_per_page', $customPPPlimit);
    }
}

Funcionó para mí...

1 mar 2017 01:08:00
0

Si estás utilizando un bucle personalizado, simplemente especifica posts_per_page, por ejemplo:


$query = new \WP_Query( [ 'posts_per_page' => 100 ] );
if ( $query->have_posts() ) {
    ......etc

Podrías establecer posts_per_page en -1 para obtener posts ilimitados, pero esto es una muy mala práctica. En su lugar, establece la cantidad de posts que creas que tu servidor puede manejar sin colapsar, para que tu sitio no se caiga si se crean demasiados posts. 200 es un buen límite máximo.

De lo contrario, utiliza el filtro pre_get_posts para modificar los parámetros pasados a las consultas:

add_action( 'pre_get_posts', function ( $query ) {
    if ( is_admin() ) {
        return;
    }
    $query->set( 'posts_per_page', 100 );
}

Nota que esto establecerá todas las consultas a 100 páginas, incluyendo feeds, REST API, XMLRPC, etc.

Además, algunas personas recomendarán query_posts, pero esto es una mala práctica y causará muchos otros problemas.

3 abr 2020 19:05:55