Intereting Posts
Использую ли я правильный крючок для удаления быстрых тэгов в admin TinyMCE? Соединение HTTPS с wampserver для плагина «Facebook для WordPress» Проблема с polylang и пользовательскими сообщениями Проблема с Multisite и SSL Как добавить новую конечную точку в woocommerce Как я могу сделать персонализированный тип сообщения липким? Замените изображение заголовка на всех других страницах, но проблема с домашним URL-адресом Крючки для автоматической установки видимости продуктов, относящихся к определенной категории, только для каталогов Поиск и замена завершающих строк почему я не получаю сообщения об ошибках в admin при разработке? Как добавить nofollow на весь сайт Как показать только следующую ссылку для разбивки по страницам, используя wp_link_pages () Сообщения отображаются от старого до нового, в порядке возрастания Функция темы Redeclare в плагине Отображать теги с завихрением

Ограничить количество страниц в разбивке на страницы

У меня более 500 сообщений, и я хочу ограничить только 100 сообщений с разбивкой на страницы. Итак, 10 страниц с 10 сообщениями в каждом. Представляя вам код:

$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1; $posts = get_posts( array( 'numberposts' => 10, 'paged' => $paged, 'meta_key' => 'property', 'orderby' => 'meta_value_num', //or 'meta_value_num' 'order' => 'DESC', ) ); if( $posts ) { $count = 0; foreach( $posts as $post ) { setup_postdata( $post ); // post stuff $count++; } wp_reset_postdata(); } 

Прежде чем начать, не используйте get_posts для get_posts на страницы. get_posts юридически разбивает разбиение на страницы и не возвращает объект запроса. Если вам нужно разбивать запросы на страницы, используйте WP_Query

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

  • Удалите ссылки на странице на стр. 10, но снова вы можете вручную ввести страницу 11 и посмотреть страницы 11 сообщений

  • Запуск пользовательской функции, когда публикуется новое сообщение, чтобы изменить статус сообщения 101-го сообщения и секвенциальных сообщений на что-то еще, например draft . По умолчанию WP_Query запрашивает только publish сообщения для всех пользователей и дополнительные private сообщения для зарегистрированных пользователей. Поэтому, если вы измените статус сообщения, эти должности будут исключены

  • Другим, менее интрузивным методом будет выполнение двух запросов. Первый, который будет очень простым и тощим, вернет только идентификатор сообщения из первых 100 сообщений. Эти идентификаторы будут переданы во второй запрос, который получит 10 сообщений на страницу и будет иметь только 10 страниц, потому что мы просто передаем ему 100 идентификаторов. Преимущество здесь в том, что если вы вручную введете страницу 11, вы получите страницу 404.

ПРИМЕР ТОЧКИ 3

Как я уже сказал, пункт 3 – лучший вариант здесь. Мы будем использовать get_posts для первого запроса, поскольку он сокращает разбиение на страницы, что ускоряет ваш запрос, и мы получим только идентификаторы сообщений, которые делают полный запрос на 99,9% быстрее обычного. В целом, влияние на страницу почти равно нулю. Для нашего второго запроса мы будем использовать WP_Query и параметр post__in чтобы получить наш вычисленный список сообщений

( Этот код не проверен и требует PHP 5.4+ )

 $args = [ 'posts_per_page' => 100, 'fields' => 'ids', // Add additional args here ]; $post_ids = get_posts( $args ); if ( $post_ids ) { $args_2 = [ 'paged' => $paged, 'post__in' => $post_ids, 'posts_per_page' => 10, ]; $q = new WP_Query( $args_2 ); while ( $q->have_posts() ) { $q->the_post(); // YOUR LOOP } next_posts_link( 'Next Posts', $q->max_num_pages ); previous_posts_link( 'Previous Posts' ); wp_reset_postdata(); } 

Может быть, это помогает

 function wpcodex_filter_main_search_post_limits( $limit, $query ) { return 'LIMIT 0, 100'; } add_filter( 'post_limits', 'wpcodex_filter_main_search_post_limits', 10, 2 ); 

Подробнее: фильтр post_limits

Попробуйте этот код, который поможет вам отображать только 10 страниц.

Это код, в котором вы хотите отобразить сообщение:

 <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array( 'post_type' => 'property', 'posts_per_page' => 10,'paged'=> $paged,'orderby'=> 'meta_value_num','order'=> 'DESC'); $loop = new WP_Query( $args ); while ( $loop->have_posts() ) : $loop->the_post(); print_r($post); ?> <h1> <?php the_post_thumbnail(); ?></h1> <h2><?php the_title(); ?></h2> <h3><?php the_content(); ?></h3> <?php endwhile; ?> 

Это нижний колонтитул, где вам нужно отображать разбивку на страницы.

 <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; ?> <?php if($loop->max_num_pages > 1 && $loop->max_num_pages < 11 ) { ?> <ul class="pager"> <?php for($i=1;$i<=$loop->max_num_pages; $i++){ ?> <li><a href="<?php get_permalink();?>page/<?php echo $i; ?>"> <?php echo $i; ?></a></li> <?php } ?> </ul> <?php } else if($loop->max_num_pages > 1 && $loop->max_num_pages > 10) { ?> <ul class="pager"> <?php for($i=1;$i<=10; $i++){ ?> <li><a href="<?php get_permalink();?>page/<?php echo $i; ?>"> <?php echo $i; ?></a></li> <?php } ?> </ul> <?php } else{ ?> <?php } ?>