Intereting Posts
Как WordPress генерирует предварительный просмотр веб-сайта комментария? Почему мои ссылки с разбивкой по страницам не работают? Включение миниатюр сообщений для пользовательских типов сообщений Может ли пользователь отображаться или скрываться в зависимости от состояния входа пользователя в систему? обновить сообщение meta front end дезинфекция / экранирование плагинов Исключение липких сообщений из цикла и WP_Query () в WordPress? Могу ли я легко переключать темы на полностью построенном веб-сайте? WordPress Customizer не устанавливает значение по умолчанию при первоначальной установке? Как WordPress отслеживает, что определенный Пользователь зарегистрирован? WP Налоговый запрос и порядок по налоговым запросам не работают Есть ли способ уведомлять конкретных пользователей, когда новые публикации публикуются на определенные страницы? Правило перезаписи для строки запроса Попытка добавить класс для публикации ссылок get_children () работает неправильно – только на один пост?

Добавить разбивку на страницы в таблицу, создаваемую wp_query

Я потратил часы, пытаясь найти решение этого, но я не могу понять это. У меня есть таблица, которая показывает данные пользователя, и я пытаюсь добавить к ней разбивку на страницы.

Я попытался добавить «paged» в массив, но когда я нажимаю на ссылку, я получаю «Страница не найдена».

Если я правильно понимаю, проблема возникает из-за того, что у меня есть таблица, созданная вместо «вызывающих» сообщений.

Вот что у меня есть сейчас:

<?php if ( !function_exists('gb_is_user_merchant_role') || !gb_is_user_merchant_role( array( 'deal_admin' ) ) ): ?> <div class="dashboard_container section main_block"> <?php // Purchase history if ( gb_account_merchant_id() ) { $deals = null; $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array( 'post_type' => 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()) { ?> <?php if ( !function_exists('gb_is_user_merchant_role') || !gb_is_user_merchant_role( array( 'coupon_admin' ) ) ): ?> <span class="specialLink_here" style="font-size:16px;"><a href="<?php gb_merchant_purchases_report_url( gb_account_merchant_id() ) ?>" class="report_button"><?php gb_e('Purchase History') ?></a> | </span> <?php if ( function_exists( 'gb_sales_summary_report_url' ) ): ?> <span class="specialLink_here" style="font-size:16px;"><a href="<?php gb_sales_summary_report_url() ?>" class="report_button"><?php gb_e('Sales Summary Report') ?></a> | </span> <?php endif ?> <?php endif ?> <?php if ( !function_exists('gb_is_user_merchant_role') || gb_is_user_merchant_role( array( 'merchant_admin', 'sales_admin' ) ) ): ?> <?php if ( function_exists( 'sec_get_users_report_url' ) ): ?> <span class="specialLink_here" style="font-size:16px;"><a href="<?php echo sec_get_users_report_url() ?>" class="report_button"><?php gb_e('Customer Report') ?></a></span> <?php endif ?> <?php endif ?> <table class="report_table merchant_dashboard" style="margin-top:20px;"><!-- Begin .purchase-table --> <thead> <tr> <th class="contrast th_status" style="padding:10px;"><?php gb_e('Status'); ?> </th> <th class="purchase-purchase_deal_title-title contrast" style="padding:10px;"><?php gb_e('Deal'); ?></th> <th class="contrast th_total_sold" style="padding:10px;"><?php gb_e('Total Sold'); ?></th> <th class="contrast th_published" style="padding:10px;"><?php gb_e('Published'); ?></th> <th class="contrast th_category" style="padding:10px;"> <form action="" method="get" > <?php $selected = ( isset( $_GET['filter'] ) && $_GET['filter'] != '' ) ? $_GET['filter'] : 0 ; $args = array( 'show_option_none' => 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([^>]*)>#", "<select$1 onchange='return this.form.submit()'>", $select); echo $select; ?> <noscript><div><input type="submit" value="View" /></div></noscript> </form> </th> <th class="contrast th_reports" style="padding:10px;"><?php gb_e('Reports'); ?></th> </tr> </thead> <tbody> <?php while ($deals->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[] = '<a href="'.get_term_link( $cat->slug, gb_get_deal_cat_slug() ).'">'.$cat->name.'</a>'; } ?> <tr id="published_deal_<?php the_ID() ?>"> <td class="td_status"> <?php if ( !function_exists('gb_is_user_merchant_role') || !gb_is_user_merchant_role( array( 'sales_admin' ) ) || ( gb_is_user_merchant_role( array( 'sales_admin' ) ) && in_array( gb_get_status(), array( 'open', 'closed' ) ) ) ): ?> <span class="alt_button<?php if (gb_get_status() == 'closed') echo ' contrast_button' ?>"><a href="<?php the_permalink() ?>"><?php echo gb_get_status() ?></a></span> <br/> <?php if ( !function_exists('gb_is_user_merchant_role') || !gb_is_user_merchant_role( array( 'coupon_admin', 'sales_admin' ) ) ): ?> <a href="#" class="deal_suspend_button alt_button contrast_button" rel="<?php the_ID() ?>"><?php gb_e('Suspend') ?></a> <?php endif ?> <?php endif ?> </td> <td class="purchase_deal_title"> <?php the_title() ?> <br/> <a href="<?php the_permalink() ?>" target="_blank"><?php gb_e('View Deal') ?></a> <?php if ( !function_exists('gb_is_user_merchant_role') || !gb_is_user_merchant_role( array( 'coupon_admin', 'sales_admin' ) ) ): ?> <a href="<?php gb_deal_edit_url() ?>" target="_blank"><?php gb_e('Edit') ?></a> <?php endif ?> </td> <td class="td_total_sold"><?php gb_number_of_purchases() ?></td> <td class="td_published"><p><?php printf( gb__('Published: %s'), get_the_date() ) ?></p><p><?php printf( gb__('Modified: %s'), get_the_modified_date() ) ?></p></td> <td class="td_category"><?php echo implode( ', ', $category_array ) ?></td> <td class="td_reports"> <?php if ( !function_exists('gb_is_user_merchant_role') || !gb_is_user_merchant_role( array( 'coupon_admin' ) ) ): ?> <span class="report_button"><?php gb_merchant_purchase_report_link() ?></span> <?php endif ?> <span class="report_button"><?php gb_merchant_voucher_report_link() ?></span> </td> </tr> <?php endwhile; ?> </tbody> </table><!-- End .purchase-table --> <?php } else { echo '<p>'.gb__('No sales info.').'</p>'; } } else { echo '<p>'.gb__('Restricted to Businesses.').'</p>'; } ?> 

 <?php if ( $deals->max_num_pages > 1 ) : ?> <div id="nav-below" class="navigation clearfix"> <div class="nav-previous"><?php next_posts_link( gb__( '<span class="meta-nav">&larr;</span> Older deals' ), $deals->max_num_pages ); ?></div> <div class="nav-next"><?php previous_posts_link( gb__( 'Newer deals <span class="meta-nav">&rarr;</span>' ), $deals->max_num_pages ); ?></div> </div><!-- #nav-below --> <?php endif; ?> <?php wp_reset_query(); ?> 

Как уже отмечалось в комментариях

  • gb_bypass_filter не является допустимым параметром для WP_Query . Если вы хотите подавить эффекты фильтров в своем запросе, добавьте 'suppress_filters' => true к вашим аргументам запроса

  • previous_posts_link() не принимает два аргумента, только один. В отличие от next_posts_link() , он не имеет второго параметра $max_pages . Таким образом, вы можете удалить эту часть из своей функции

  • При использовании WP_Query вы должны использовать wp_reset_postdata() , а не wp_reset_query() . Последний используется с query_posts который вы никогда не должны использовать.

  • Если это статическая page на главной странице, вы должны использовать page как значение для вашего paged параметра, а не для paged

У меня был второй взгляд на ваш код, и кажется, что ваш код немного разобщен. Внесите следующие корректировки

  • Переместите свою разбивку на страницы чуть ниже строки в endwhile или </table> , в зависимости от того, где вы хотите отобразить свою разбивку на страницы. Последний, однако, выглядит как правильное место

  • Переместите wp_reset_postdata() чуть ниже вашей разбивки на страницы, это должно быть между endwhile и первым случаем } else { . Причина в том, что, когда нет сообщений, что вы перезагружаете 🙂

Кроме того, ваш код должен работать и разбиваться на страницы как обычно. Если это не так, попробуйте следующее

  • Добавьте аргумент suppress_filters в ваш запрос. Это будет тест, чтобы убедиться, что у вас нет внешних фильтров, которые изменяют ваш запрос.

  • Включите отладку и проверьте наличие очевидных ошибок и ошибок.

  • Снова промойте свои постоянные ссылки, перейдя на страницу настроек постоянной ссылки.

  • Сбросьте свой пользовательский запрос ( var_dump($deals); ) и проверьте, что все входы и выходы – это то, что вы ожидаете от них. Обратите внимание на max_num_pages и убедитесь, что у вас более одной страницы

  • Деактивируйте все плагины один за другим, чтобы устранить их как возможные причины вашей проблемы. Также очистите все кеши. Также попробуйте использовать свой код в связанной теме

Кроме того, действительно сложно сказать, что вызывает вашу проблему

Функции previous_posts_link и next_posts_link предназначены для разбивки страниц в архивах, они оба проверяют, является ли is_single , поэтому не будет работать ни на одном типе сообщений, странице или пользовательских типах сообщений.

Вместо этого вам нужно использовать paginate_links : http://codex.wordpress.org/Function_Reference/paginate_links