Muestra un número diferente de publicaciones por página según el contexto (por ejemplo, página de inicio, búsqueda, archivo)

20

En la Configuración de lectura, hay un lugar para configurar la cantidad de publicaciones mostradas que afecta la cantidad de publicaciones que se muestran en todos los contextos. Me gustaría mostrar en cambio una cierta cantidad de publicaciones en la página de inicio y una cantidad diferente de publicaciones en páginas como el archivo, los resultados de búsqueda, etc.

Me doy cuenta de que podría hacer esto editando los archivos de temas y cambiando los parámetros de consulta allí, pero preferiría tener un acceso más fácil a una página de configuración simple. Hace mucho tiempo, me encontré con un complemento que hizo esto, pero no puedo localizarlo ahora.

¿Alguien sabe de un complemento para hacer esto, o incluso de una función que podría poner en functions.php para lograr lo mismo?

    
pregunta Doug 11.08.2010 - 21:52

4 respuestas

23

Creo que la mejor manera de hacer esto en un complemento es ejecutar la siguiente función de ejemplo cuando se encuentra el gancho de acción pre_get_posts . El objeto $wp_query está disponible, lo que significa que sus etiquetas condicionales están disponibles, pero antes de que WordPress obtenga las publicaciones, lo que significa que está cambiando las variables de consulta antes de que se ejecute la primera consulta, en lugar de agregar una segunda consulta como cuando se usa query_posts () en un archivo de tema.

function custom_posts_per_page($query) {
    if (is_home()) {
        $query->set('posts_per_page', 8);
    }
    if (is_search()) {
        $query->set('posts_per_page', -1);
    }
    if (is_archive()) {
        $query->set('posts_per_page', 25);
    } //endif
} //function

//this adds the function above to the 'pre_get_posts' action     
add_action('pre_get_posts', 'custom_posts_per_page');
    
respondido por el kevtrout 11.08.2010 - 23:08
0

podría hacer un bucle personalizado utilizando query_posts y especificar el número de publicaciones por is_home, is_archive, etc.

solo una declaración if simple junto con query_posts

    
respondido por el chrismccoy 11.08.2010 - 22:07
-1

Para agregar a esta pregunta. ¿Alguien sabe cómo determinar post_per_page para esta función? Custom_posts_per_page ($ query) si agrega la nueva página a index.php de esta manera:

<?php
if ($_GET['new'] == 1) 
{
    include ( TEMPLATEPATH . '/newpage.php' );
    exit;
}
?>
    
respondido por el glazsasha 20.01.2011 - 09:56
-1
  

Me doy cuenta de que puedo hacer esto editando los archivos de temas y cambiando los parámetros de consulta allí, pero prefiero tener un acceso más fácil a una página de configuración simple.

En aras de la integridad, encontré que query_posts combinado con $query_string concatenación funciona bien.

Coloqué este código en index.php (mi tema no tiene categoría.php) ...

<?php 
if (!is_front_page()) { 
    query_posts($query_string . "&posts_per_page=20"); 
}
?>

Por supuesto, lo que estamos haciendo aquí es modificar la cadena de consulta interna del bucle, anulando el número predeterminado de publicaciones por página .

Funciona de maravilla al proporcionar una lista más pequeña de publicaciones en la página de inicio donde muestro publicaciones completas, y una lista mucho mayor de publicaciones en todas partes (categorías, por fecha, etc.) donde solo muestro resúmenes de publicaciones.

Sin embargo, tenga en cuenta que a diferencia de la respuesta aceptada, esto ejecutará la consulta dos veces , por lo que no es una solución tan buena.

    
respondido por el Jeff Atwood 07.07.2011 - 01:25

Lea otras preguntas en las etiquetas