it-swarm-es.com

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

En la Configuración de lectura, hay 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 archivos, resultados de búsqueda, etc.

reading-settings-blog-pages-show-at-most-per-page

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 una función que podría poner en functions.php para lograr lo mismo?

21
Doug

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 una 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');
23
kevtrout

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

solo una simple sentencia if junto con query_posts

0
chrismccoy