Paginação não funciona (páginas que duram conteúdo)

Minhas páginas de paginação ecoam o mesmo conteúdo em cada página. A página um é consultada para mostrar duas postagens, que mostra corretamente. A página dois mostra exatamente as mesmas duas postagens que a página um faz. Aqui está o meu código: (functions.php) (este é um código pré-feito que encontrei na web).

function wp_corenavi() { global $wp_query, $wp_rewrite; $pages = ''; $max = $wp_query->max_num_pages; if (!$current = get_query_var('paged')) $current = 1; $a['base'] = str_replace(999999999, '%#%', get_pagenum_link(999999999)); $a['total'] = $max; $a['current'] = $current; $total = 1; //1 - display the text "Page N of N", 0 - not display $a['mid_size'] = 5; //how many links to show on the left and right of the current $a['end_size'] = 1; //how many links to show in the beginning and end $a['prev_text'] = '« Previous'; //text of the "Previous page" link $a['next_text'] = 'Next »'; //text of the "Next page" link if ($max > 1) echo ''; } 

(Modelo de página personalizada)

  

<a href="https://wordpress.stackexchange.com//questions/45465/pagination-not-working-pages-duplicating-content/" title="" rel="bookmark">


Solutions Collecting From Web of "Paginação não funciona (páginas que duram conteúdo)"

Isso ocorre porque query_posts redefine a consulta. Veja este aviso na página Codex:

A paginação não funcionará corretamente, a menos que você use query_posts () em um modelo de página e você configure a consulta ‘paged’ adequadamente: http://scribu.net/wordpress/wp-pagenavi/right-way-to-use- query_posts.html

A chamada:

 query_posts( 'category_name=category&showposts=2'); 

não diz qual a página para obter (de modo que obtém a primeira página). É uma questão simples de:

 $page = get_query_var('paged'); $page = (!empty($page) ? $page : 1); query_posts( 'category_name=category&showposts=2&paged='.$page); 

Nota: Para páginas (ou seja, ao usar um modelo de página personalizado, você precisa usar get_query_var('page') vez de get_query_var('paged') .

Bem, por um lado, você está modificando sua consulta dentro de seu Loop, que começa com seu if ( have_posts() ) : conditional. Mova isso para fora da consulta:

  < ?php query_posts( 'category_name=category&showposts=2'); ?> 

Em segundo lugar, você não deseja usar query_posts() para nada além de modificar o loop primário . Como este é um modelo de página personalizado, o Loop Primário é o conteúdo da Página . Sua consulta de categoria é um loop secundário . Então, você deve usar WP_Query() vez de query_posts() para este loop secundário .

Em terceiro lugar, sempre que você criar um loop secundário que requer paginação, você precisa dizer ao WordPress que pagine com base na consulta do loop secundário, em vez de paginar com base na consulta do Loop primário . Essa questão foi tratada extensivamente aqui no WPSE; Aqui está um exemplo .

Para modificá-lo para o seu caso de uso, faça algo como isto:

 < ?php // Custom query args $category_query_args = array( 'category_name' => 'category' 'posts_per_page' => 2 ); // Custom query $category_query = new WP_Query( $category_query_args ); // Reset pagination global $wp_query; $temp = $wp_query; $wp_query= null; $wp_query = $category_query; // Output the Loop if ( $category_query->have_posts() ) : ?> 
while ( $category_query->have_posts() ) : $category_query->the_post(); ?>
< ?php the_post_thumbnail('thumbnail'); ?>

< ?php the_title(); ?>

< ?php echo content(15, __('(Read More)')); /* twentyten_posted_on(); */ ?>
< ?php endwhile; // Custom navigation ?>
< ?php if (function_exists('wp_corenavi')) wp_corenavi(); ?>
< ?php endif; // Reset query $wp_query = null; $wp_query = $temp; wp_reset_query(); ?>

Editar

ps você deve usar posts_per_page vez de showposts , que está obsoleto.

Editar 2

Por sinal, o WordPress já fornece uma function para paginar links: paginate_links() . É bastante simples de usar, embora exija mais argumentos do que a típica function WordPress. Veja como eu uso isso em Enologia .

Esta é a resposta que eu encontrei: Pagination que resolve apenas a primeira página

 global $query_string; parse_str( $query_string, $my_query_array ); $paged = ( isset( $my_query_array['paged'] ) && !empty( $my_query_array['paged'] ) ) ? $my_query_array['paged'] : 1; query_posts('post_type=post&posts_per_page=3&paged='.$paged);