Intereting Posts
WP_Query meta_query по ключу массива Проверьте версию php до активации темы Требуется функция woocommerce для получения списка корзин с элементами Могу ли я получить все опции, используя идентификатор группы опций? Пользовательский тип сообщения не работает Как добавить загрузку изображения, настраиваемое поле в продукт WooCommerce? Скрыть почтовый индекс за сообщениями (Удалить все, опубликован и разбит) в пользовательском типе сообщения Содержимое сообщений добавляется с заголовком, а не содержимым, используя the_excerpt () Сортировка сообщений несколькими настраиваемыми полями в определенном порядке Код доступа / пароль ограничивает доступ к странице, без регистрации пользователя ..? Подсчет количества сообщений (пользовательский тип сообщения) Проблемы с запросом Могу ли я использовать запросы mysql для замены query_posts ()? WordPress не позволяет автоматически обрезать изображения Правильный и безопасный способ доступа к пользовательской базе данных SQL в пользовательском файле шаблона PHP Как отображать значок при публикации нового сообщения, а затем удалять его в определенное время?

Цикл, начинающийся с определенного идентификатора

Можно ли запустить цикл из определенного идентификатора сообщения? Я хотел бы получить все сообщения, начинающиеся с определенного идентификатора, уклончиво. Чтобы объяснить, я должен сначала сделать некоторые предположения.

Предположим, что в моей базе данных WordPress имеется 20 сообщений. Очевидно, что каждое сообщение будет иметь идентификатор и предположить, что идентификаторы для этих сообщений сообщений варьируются от 1 до 20.

Также предположим, что при загрузке сообщений через цикл мы используем все по умолчанию. Таким образом, цикл будет получать записи / сообщения от 20 до 1. Если у нас есть ограничение диапазона 10, то страница 1 будет извлекать от 20 до 11, а страница 2 будет получать от 10 до 1.

Теперь вернемся к моему вопросу. Предположим, что я хотел бы получить записи с 17 по 8. Могу ли я передать 17 в цикле, и получить 10 записей с 17 до 8? Это возможно?

Вот несколько строк кода, которые помогут понять проблему:

<?php $args = array( 'post_type' => 'post', 'post_status' => 'publish', 'category_name' => 'news', 'posts_per_page' => 10, 'ID_VARIABLE_HERE' => 17 // I would like to be able to pass the ID, and the loop should return 10 posts (as defined in the posts_per_page), descendingly, starting at 17. ); $custom_query = new WP_Query($args); ?> <?php if ($custom_query->have_posts()): while ($custom_query->have_posts()) : $custom_query->the_post() ; ?> <article class="my-article"> <div class="my-image"><?php the_post_thumbnail(); ?></div> <div class="my-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div> <div class="my-details"><?php the_excerpt(); ?></div> </article> <?php endwhile; else: ?> <p><?php _e('No contents exist.'); ?></p> <?php endif; ?> 

Как вы можете видеть, я хотел бы передать аргумент в $args , который будет иметь значение ID (17 в приведенном выше примере). Прочтите комментарий к коду выше для получения подробной информации о том, что необходимо. Является ли это возможным? Если не через аргумент в $args , что это еще один способ сделать это?

Благодарю.

Solutions Collecting From Web of "Цикл, начинающийся с определенного идентификатора"

Будет ли использовать параметр offset для ваших нужд?

 $args = array( 'post_type' => 'post', 'post_status' => 'publish', 'category_name' => 'news', 'posts_per_page' => 10, 'offset' => 17 ); 

Вы можете сделать что-то вроде ниже, предоставляя идентификатор сообщения, который вы хотите запустить как $ max_post_id, и опуститесь до определенного значения post_id, которое может быть предоставлено как $ min_post_id:

 // Get all post ids. $all_post_ids = get_posts(array( 'fields' => 'ids', // Only get post IDs 'posts_per_page' => -1 )); // Make a list of all possible post ids between two post ids. $max_post_id = 17; $min_post_id = 8; $custom_post_id = []; for ( $i = $max_post_id; $i > $min_post_id; $i-- ) { $custom_post_id[] = $i; } // Filter out the valid post ids from the possible post ids. $query_post_ids = array_intersect( $custom_post_id, $all_post_ids ); $args = array( 'post_type' => 'post', 'post_status' => 'publish', 'category_name' => 'news', 'posts_per_page' => 10, 'post__in' => $query_post_ids // Use the valid post ids in the array. ); $custom_query = new WP_Query( $args ); if ( $custom_query->have_posts() ): while ($custom_query->have_posts()) : $custom_query->the_post() ; ?> <article class="my-article"> <div class="my-image"><?php the_post_thumbnail(); ?></div> <div class="my-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div> <div class="my-details"><?php the_excerpt(); ?></div> </article> <?php endwhile; else: ?> <p><?php _e('No contents exist.'); ?></p> <?php endif; 

Обратите внимание, что это может вызвать проблемы с производительностью, поскольку мы используем цикл «для» для создания возможных идентификаторов с уменьшением 1, если разрыв между max и min слишком велик.