Cantidad diferente de publicaciones en la página de inicio que en las páginas paginadas

2

He hecho algunas búsquedas aquí y en Google, pero todo lo que encuentro no funciona correctamente. Esperaba publicar mi código aquí y obtener ayuda con lo que me está yendo mal.

En la página de índice de mi sitio, tengo una publicación "destacada" que tiene un diseño diferente al resto de las publicaciones. Cuando haces clic en la página siguiente, esa publicación destacada desaparece y me deja con un recuento desigual de publicaciones y necesito una cuenta de publicaciones uniforme. Aquí está el código que encontré y he intentado implementar sin alegría.

Estoy usando la siguiente consulta (todo lo demás es igual en el código de conteo y debajo):

<?php
  $page = (get_query_var('paged')) ? get_query_var('paged') : 1;
  query_posts("paged=$page&posts_per_page=10"); 
?>

Este es el código que quiero poder usar:

<?php
$page = (get_query_var('paged')) ? get_query_var('paged') : 1;
$page_num = $paged;
    if ($pagenum='') $pagenum = 1;
    if ($pagenum > 1) { $post_num = 10 } else { $post_num = 9 }
query_posts('showposts='.$post_num.'&paged='.$page_num); '
?>

Esto sería lo mismo para el resto de la página:

<?php $count = 1; ?>

<?php while (have_posts()) : the_post(); ?>

<?php if ((!is_paged()) && ($count == 1 )){  ?>

 // FEATURED HTML HERE

<?php } else {  ?>

 // REGULAR HTML HERE

<?php } $count++; ?>

<?php endwhile; ?>

// PAGINATION HERE
    
pregunta Justice Is Cheap 27.11.2012 - 16:59

2 respuestas

2

Deberías usar el filtro pre_get_posts . Puede excluir la página de inicio con ! is_front_page o ! is_home dependiendo de su configuración.

/**
 * Changes the number of posts per page if not is_home
 *
 * @author  SFNdesign, Curtis McHale
 */
function wptt_change_posts_on_page( $query ) {
    if ( ! is_home() && $query->is_main_query() ) {
        $query->set( 'posts_per_page', '10' );
    }
}
add_action( 'pre_get_posts', 'wptt_change_posts_on_page' );

Como dije, es posible que necesites usar ! is_front_page dependiendo de cómo esté configurado tu tema. Aquí hay una buena publicación en el blog que explica más sobre esos condicionales.

enlace

Ah, y nunca uses query_posts , evar. enlace

    
respondido por el curtismchale 27.11.2012 - 17:42
2

La lógica que se te ocurrió en el segundo fragmento tiene sentido. No obstante, hay un par de cosas incorrectas con su código.

Por un lado, la variable $pagenum es redundante y no la necesita. Por otro lado, asigna el valor de retorno de get_query_var() a $page y luego en las siguientes líneas use $paged - quiere que sea igual. Lo siguiente debe hacer:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$post_num = ($paged > 1) ? 10 : 9;
// query for posts

Además, en el fragmento de marcado (el tercero de su pregunta), no se necesita $count , simplemente puede usar también $paged . Dejando de lado y en aras de la integridad, no emplearía tantas etiquetas de apertura y cierre de php, pero eso es cuestión de gustos y no influirá en la funcionalidad de su código.

Uno más: a menos que este sea su bucle principal, debe usar la clase WP_Query en lugar de query_posts . Y si es así, el uso de query_posts no es tan incorrecto, pero aún así sería recomendable que eche un vistazo a pre_get_posts filtra en su lugar.

    
respondido por el Johannes Pille 27.11.2012 - 17:47

Lea otras preguntas en las etiquetas