php - name - show page title wordpress
La paginación de WordPress no funciona Page 2 igual que la página 1 (2)
Estoy tratando de hacer funcionar la paginación de WordPress.
He utilizado diferentes complementos e intenté ajustar el código en la función pagination.php sin ningún resultado.
No importa qué plugin o tweak he usado hasta ahora, las páginas 2, 3, etc. siempre muestran el mismo conjunto de publicaciones.
Aquí está el código en la paginación.php
<!-- Previous / More Entries -->
<div class="mdnw_pagination">
<?php if(function_exists(''wp_paginate'')) :
wp_paginate();
; else : ?>
<div class="p button"><?php next_posts_link(__(''« Previous Posts'', ''skeleton'')); ?></div>
<div class="m button"><?php previous_posts_link(__(''Next Posts »'', ''skeleton'')); ?></div>
<?php endif; ?>
</div>
<!-- </Previous / More Entries -->
Aquí está el código para la plantilla de blog para la página de inicio:
<!-- THE POST QUERY -->
<?php
wp_reset_query();
global $paged;
global $template_file;
$cat_string = '''';
$format = '''';
if( get_post_custom_values(''blog_post_count'') ) :
$post_array = get_post_custom_values(''blog_post_count'');
$post_count = join('','', $post_array);
else :
$post_count = -1;
endif;
/* Get Category Filter */
if(get_custom_field(''blog_category_filter'' )) :
$cats = get_custom_field( ''blog_category_filter'' );
foreach ( $cats as $cat ) {
$acats[] = $cat;
}
$cat_string = join('','', $acats);
endif;
$args=array(
''cat''=>$cat_string, // Query for the cat ID''s (because you can''t use multiple names or slugs... crazy WP!)
''posts_per_page''=>$post_count, // Set a posts per page limit
''paged''=>$paged, // Basic pagination stuff.
);
query_posts($args); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php get_template_part( ''includes/format'', $format ); ?>
<?php endwhile; else: ?>
<div class="post">
<p><?php _e(''Sorry, no posts matched your criteria.'', ''skeleton'') ?></p>
</div><!-- /.post -->
<?php endif; ?>
<?php get_template_part( ''includes/element'', ''pagination'' ); ?>
<?php wp_reset_query(); ?>
</div>
¿Qué debo cambiar en cada archivo para que muestre cualquier otro contenido, excepto la primera página?
Cambiaría la configuración del panel de lectura, pero la función de mensajes de consulta usa un valor dinámico que desconozco.
¿Cómo o qué puedo cambiar para que funcione?
Probé la solución en esta página https://wordpress.stackexchange.com/questions/105977/wordpress-pagination-not-working-always-showing-first-pages-content , pero fue en vano:
Aquí es a lo que le cambié el código:
<?php
wp_reset_query();
global $paged;
global $template_file;
$cat_string = '''';
$format = '''';
if( get_post_custom_values(''blog_post_count'') ) :
$post_array = get_post_custom_values(''blog_post_count'');
$post_count = join('','', $post_array);
else :
$post_count = -1;
endif;
/* Get Category Filter */
if(get_custom_field(''blog_category_filter'' )) :
$cats = get_custom_field( ''blog_category_filter'' );
foreach ( $cats as $cat ) {
$acats[] = $cat;
}
$cat_string = join('','', $acats);
endif;
$paged = (get_query_var(''paged'')) ? get_query_var(''paged'') : 1;
$args=array(
''cat''=>$cat_string, // Query for the cat ID''s (because you can''t use multiple names or slugs... crazy WP!)
''posts_per_page''=> 9, // Set a posts per page limit
''paged''=>$paged, // Basic pagination stuff.
);
$your_query = new WP_Query( $args ); ?>
<?php if ( $your_query->have_posts() ) : while ( $your_query->have_posts() ) : $your_query->the_post(); ?>
<?php get_template_part( ''includes/format'', $format ); ?>
<?php endwhile; else: ?>
<div class="post">
<p><?php _e(''Sorry, no posts matched your criteria.'', ''skeleton'') ?></p>
</div><!-- /.post -->
<?php endif; ?>
<?php get_template_part( ''includes/element'', ''pagination'' ); ?>
<?php wp_reset_query(); ?>
Lo arreglé.
Encontré la solución aquí: http://themeforest.net/forums/thread/pagination-on-wordpress-static-page-set-to-front-page/28120
En lugar de hacer esto:
$paged = (get_query_var(''paged'')) ? get_query_var(''paged'') : 1;
query_posts( array( ''post_type'' => ''post'', ''paged'' => $paged ) );
Hice esto:
if ( get_query_var(''paged'') ) {
$paged = get_query_var(''paged'');
} elseif ( get_query_var(''page'') ) {
$paged = get_query_var(''page'');
} else {
$paged = 1;
}
query_posts( array( ''post_type'' => ''post'', ''paged'' => $paged ) );
¡Ahora funciona!
Si tengo brechas entre nuevos temas, a menudo me olvido de este problema de paginación y tengo que pasar una hora recordando cómo lo corregí por mi cuenta.
Mi método es poner todas las opciones de consulta en functions.php en lugar de en la página.
Ejemplo, si usa la paginación, al iniciar su bucle index.php como este produce el error page-2-is-same-as-page-1.
<?php
$args = array( ''post_type'' => ''post'', ''posts_per_page'' => 4, ''orderby'' => ''date'', ''order'' => ''DESC'', ''tag'' => ''pics, vids'' );
$loop = new WP_Query( $args );
while ($loop->have_posts() ) : $loop->the_post();
?>
así que cambie eso a solo el abridor de bucles sin lujos como este.
<?php while (have_posts()) : the_post(); ?>
y luego ponga esas mismas opciones en functions.php para que se vea algo así ...
function modify_query_order_index( $query ) {
if ( $query->is_front_page() && $query->is_main_query() && !is_admin() ) {
$query->set( ''orderby'', ''date'' );
$query->set( ''order'', ''DESC'' );
$query->set( ''posts_per_page'', ''4'' );
$query->set( ''post_type'', ''post'' );
$query->set( ''tag'', ''pics, vids'' );
}
}
add_action( ''pre_get_posts'', ''modify_query_order_index'' );
y ahora, dependiendo de cómo esté escrita su función de paginación, sus páginas 1, 2 y 3+ deberían comportarse como se esperaba.
prima
el ajuste de posts_per_page con esta consulta en funciones anulará la configuración en el panel de administración> / settings / reading / Blog pages como máximo xx, mientras que la configuración de publicaciones por página con una consulta in page no anula esa configuración.