Mostrar un número diferente de mensajes por página dependiendo del contexto (por ejemplo, página de inicio, búsqueda, archivo)

wordpress.stackexchange https://wordpress.stackexchange.com/questions/21

  •  16-10-2019
  •  | 
  •  

Pregunta

En los ajustes de la lectura, no hay lugar para establecer el número de puestos demostrado que afecta al número de puestos que se indican en todos los contextos. Me gustaría mostrar en lugar de un cierto número de mensajes en la página principal, y un número diferente de los mensajes en las páginas como archivo, resultados de búsqueda, etc.

-ajustes de la lectura-blog-páginas-show-a-más-por-página

Me da cuenta de que podía hacer esto mediante la edición de los archivos del tema y cambiar los parámetros de consulta, pero yo preferiría tener un acceso más fácil a la página de una sencilla configuración. Hace mucho tiempo, me encontré con un plugin que hizo esto, pero no puedo localizarla ahora.

¿Alguien sabe de un plugin para hacer esto, o incluso una función que podría poner en functions.php para llevar a cabo la misma cosa?

¿Fue útil?

Solución

Creo que la mejor manera de hacer esto en un plugin 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, es decir, las etiquetas condicionales están disponibles, pero antes de WordPress obtiene los mensajes, lo que significa que estamos modificando consulta vars antes de la primera consulta que se está ejecutando, en lugar de añadir una segunda consulta como cuando query_posts () se utiliza 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');

Otros consejos

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

sólo un simple if junto con query_posts

Para añadir a esta pregunta. ¿Alguien sabe cómo determinar post_per_page para esta función la función custom_posts_per_page ($ consulta) si añadir la nueva página a index.php como esto:

<?php
if ($_GET['new'] == 1) 
{
    include ( TEMPLATEPATH . '/newpage.php' );
    exit;
}
?>

Me di cuenta de que podía hacer esto mediante la edición de los archivos del tema y cambiar los parámetros de consulta allí, pero yo preferiría tener un acceso más fácil a una página de configuración sencilla.

En aras de la exhaustividad, encontró que query_posts combinada con la concatenación $query_string funciona bien.

coloqué este código en index.php (mi tema no tiene category.php) ...

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

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

Se trabaja un convite para proporcionar una lista más pequeña de mensajes en la página principal donde estoy mostrando los mensajes completos, y una lista mucho mayor de los mensajes en cualquier otro sitio (categorías, por fecha, etc.) donde sólo estoy mostrando resúmenes de entradas.

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

Licenciado bajo: CC-BY-SA con atribución
scroll top