Intereting Posts
Неограниченные миниатюры высоты register_sidebar_widget устарел с версии 2.8! Вместо этого используйте wp_register_sidebar_widget () Как добавить метабокс в панель администратора? Загрузите всю галерею NextGEN из одного миниатюры? Создайте случайное уникальное 6-значное число в качестве настраиваемого поля для пользовательского типа сообщения Поле «Разрешить комментарии» не может быть проверено Force shortcode для отображения, где он встроен Как я могу использовать этот javascript правильно с wordpress? Перенос страницы в статью Как добавить кнопку, которая позволяет пользователю вставлять ссылку в текстовое поле, расположенное в интерфейсе? edit_comment_link не отображается для автора комментариев Настройка Cookie с использованием переменной из URL-адреса Точка не добавляется в конце href Предстоящее событие. Как сортировать базу данных по пользовательскому полю даты, но игнорировать прошлые даты? Вставить изображения в сообщение WordPress с запросом

Получать случайные сообщения между конкретными датами / определенного возраста

Мне нужно получить идентификаторы почтовых сообщений из пользовательского типа сообщений случайным образом, а сообщения будут опубликованы в течение 30 дней.
Но я не могу найти решение. Как мне это сделать?

Это мой запрос.

query_posts("post_type='random_posts'&order='DESC'&posts_per_page=10"); //shuffle(query_posts()) 

Две заметки заранее:

  1. Нет (если вы не создали CPT) post type random_posts .

  2. Не используйте query_posts .

При этом следующее будет делать то, что вы хотите:

Просто случайность

 $args = array( 'posts_per_page' => '10', 'orderby' => 'rand' ); $random_posts = get_posts( $args ); foreach( $random_posts as $random_post ) { // do something echo $random_post->ID . '<br />\n'; // access Post ID, for instance } 

Ссылка: get_posts

Даты до 3.7

До сих пор ваше 30-дневное ограничение по возрасту было невозможно достичь в одном запросе. Вы можете легко получать сообщения с текущего месяца только так:

 $args = array( 'posts_per_page' => '10', 'orderby' => 'rand', 'monthnum' => intval( date( 'n' ) ) ); // rest same as above 

Что будет хорошо работать для вас в конце данного месяца, но возвращать плохие результаты (то есть ничего) в первый день месяца.

Другой вариант заключался бы в том, чтобы запрашивать гораздо больше сообщений, чем требуемые 10, и проверять даты, пока они проходят через результаты. Также чувствует себя взломанным.
К счастью, WP 3.7 не за горами …

Даты, начинающиеся с WP 3.7

WordPress 3.7 представит параметр date_query . (Это потрясающе.)
-> Использование

Это сделает ваше требование простым, как пирог:

 $args = array( 'posts_per_page' => '10', 'orderby' => 'rand', 'date_query' => array( array( 'column' => 'post_date_gmt', 'after' => '1 month ago' ) ) ); // rest same as above