Adicionar paginação à tabela gerada por wp_query

Passei horas tentando encontrar uma solução para isso, mas não consigo descobrir. Eu tenho uma tabela que mostra os dados do usuário e estou tentando adicionar paginação.

Eu tentei adicionando “paginado” na matriz, mas quando eu clicar no link eu recebo “Página não encontrada”.

Se eu entendo corretamente, o problema é criado devido ao fato de eu ter uma tabela gerada em vez de mensagens “de chamada”.

Aqui está o que tenho agora:

 
gb_get_deal_post_type(), 'post__in' => gb_get_merchants_deal_ids(gb_account_merchant_id()), 'post_status' => 'publish', 'gb_bypass_filter' => TRUE, 'posts_per_page' => 5, // return this many 'paged' => $paged, 'tax_query' => array( array( 'taxonomy' => gb_get_deal_cat_slug(), 'field' => 'id', 'terms' => array( 81,82,83,84,85,86,87,88,89,90,91,92 ), 'operator' => 'NOT IN', ), ), ); if ( isset( $_GET['filter'] ) && $_GET['filter'] != '-1' ) { $args['tax_query'][] = array( 'taxonomy' => gb_get_deal_cat_slug(), 'field' => 'id', 'terms' => array( $_GET['filter'] ), ); } $deals = new WP_Query($args); if ($deals->have_posts()) { ?> <a href="https://wordpress.stackexchange.com//questions/179713/add-pagination-to-table-generated-by-wp-query/" class="report_button"> | <a href="https://wordpress.stackexchange.com//questions/179713/add-pagination-to-table-generated-by-wp-query/" class="report_button"> | <a href="https://wordpress.stackexchange.com//questions/179713/add-pagination-to-table-generated-by-wp-query/" class="report_button"> have_posts()) : $deals->the_post(); // Build an array of the deal's categories. $category_array = array(); $cats = gb_get_deal_categories( get_the_ID() ); foreach ( $cats as $cat ) { $category_array[] = 'slug, gb_get_deal_cat_slug() ).'">'.$cat->name.''; } ?> <tr id="published_deal_">
gb__('Category Filter'), 'orderby' => 'name', 'hide_empty' => 1, 'exclude' => '81,82,83,84,85,86,87,88,89,90,91,92', // comma separated list of ids. 'echo' => 0, 'name' => 'filter', 'selected' => $selected, 'taxonomy' => gb_get_deal_cat_slug() ); $select = wp_dropdown_categories( $args ); $select = preg_replace("#]*)>#", "", $select); echo $select; ?>
<span class="alt_button"><a href="https://wordpress.stackexchange.com//questions/179713/add-pagination-to-table-generated-by-wp-query/">
<a href="#" class="deal_suspend_button alt_button contrast_button" rel="">

<a href="https://wordpress.stackexchange.com//questions/179713/add-pagination-to-table-generated-by-wp-query/" target="_blank"> <a href="https://wordpress.stackexchange.com//questions/179713/add-pagination-to-table-generated-by-wp-query/" target="_blank">

<?php } else { echo '

'.gb__('No sales info.').'

'; } } else { echo '

'.gb__('Restricted to Businesses.').'

'; } ?>

 max_num_pages > 1 ) : ?>    

Solutions Collecting From Web of "Adicionar paginação à tabela gerada por wp_query"

Como já foi observado nos comentários

  • gb_bypass_filter não é um parâmetro válido para WP_Query . Se você quiser suprimir para efetuar os filtros na sua consulta, adicione 'suppress_filters' => true aos seus argumentos de consulta

  • previous_posts_link() não aceita dois argumentos, apenas um. Ao contrário de next_posts_link() , ele não possui o segundo parâmetro $max_pages . Então, você pode remover essa parte da sua function

  • Ao usar WP_Query , você deve usar wp_reset_postdata() , e não wp_reset_query() . O último é usado com query_posts que você nunca deve usar.

  • Se esta é uma primeira página estática, você deve usar a page como valor para o seu parâmetro paged , não paged

Eu tive uma segunda olhada em seu código, e parece que seu código está um pouco desarticulado. Faça os seguintes ajustes

  • Mova a sua paginação para baixo logo abaixo da linha ou , dependendo de onde você deseja exibir sua paginação. O último, no entanto, parece ser o lugar correto

  • Mova wp_reset_postdata() para logo abaixo da sua paginação, isso deve estar entre o fim e a primeira ocorrência de } else { . A razão para isso é, quando não há postagens, o que você está redefinindo 🙂

Além disso, seu código deve funcionar e paginar como normal. Se não, tente o seguinte

  • Adicione o argumento suppress_filters à sua consulta. Esta será uma prova para ver se você não tem filtros externos que estão modificando sua consulta

  • Vire a debugging, e verifique se há erros e erros óbvios

  • Lave seus permalinks novamente visitando a página de configurações de permalink

  • Dump sua consulta personalizada ( var_dump($deals); ) e verifique se todas as inputs e saídas são o que você espera que sejam. Preste atenção em max_num_pages e certifique-se de ter mais de uma página

  • Desative todos os plugins um a um para eliminá-los como possíveis causas de seu problema. Além disso, limpe todos os caches. Também tente o seu código em um tema agrupado

Além disso, é realmente difícil dizer o que está causando seu problema

As funções previous_posts_link e next_posts_link são para paginação de página de arquivo, ambas verificam se is_single não é verdade, então não funcionará em nenhum tipo de publicação, página ou tipo de postagem personalizado.

Você precisa usar paginate_links vez disso: http://codex.wordpress.org/Function_Reference/paginate_links