Intereting Posts
Кажется, не получается комбинированный запрос AND sort? Невозможно загрузить статическую главную страницу на домашнем URL-адресе Как настроить автоматические обновления в WordPress 3.7? Классы CSS для темы Пользовательская кнопка Tiny MCE для создания настраиваемого всплывающего окна php Как добавить автоматическое создание подменю при установке тем из woocommerce в витрине? Как извлекать данные блога WordPress с помощью API Blogger с помощью python Как добавить сообщение в меню Uncaught ReferenceError: switchEditors не определен Детская тема с несколькими файлами css Замените атрибут_escape на esc_attr () получать только одобренных пользователей (плагин для конечных пользователей) URL-адрес перенаправляется в дом, там нет страницы или типа сообщения, как я могу отключить его? Включение конфликта js Как потреблять и отображать внешние данные в WordPress с другого веб-сайта

Получать сообщения за последние 24 часа и сортировать их через GD Star Rating

Я пытаюсь сортировать сообщения, используя GD Star Rating за последние 24 часа. У меня есть два отдельных запроса, но я не знаю, как их объединить.

function filter_where($where = '') { //posts in the last 24 Hours $where .= "AND post_date > '" . date('Ymd H:i:s', strtotime('-24 hours')) . "'"; return $where; } add_filter('posts_where', 'filter_where'); query_posts($query_string); 

А также

query_posts ( 'gdsr_sort = большие пальцы и posts_per_page = 10');

Я понятия не имею, как сортировать сообщения за последние 24 часа с помощью GD Star, но эти два запроса отлично работают индивидуально. Благодаря!

posts_where фильтрует «WHERE» часть инструкции SQL, а не строку запроса. Так

 $where .= "&post_date > '".date('Ymd H:i:s', strtotime('-24 hours'))."'"; 

должно быть

 $where .= " AND post_date > '".date('Ymd H:i:s', strtotime('-24 hours'))."'"; 

Кроме того, поскольку этот крючок запускается для каждого запроса (администратор и публичная сторона), вы должны использовать некоторую логику, чтобы при необходимости добавлять приложение custom where.

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

 add_filter( 'posts_where', 'filter_where' ); $query_string ='gdsr_sort=thumbs&posts_per_page=10'; query_posts( $query_string ); remove_filter( 'posts_where', 'filter_where' ); 

См. Соответствующую страницу Codex .

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

 global $wp_query; // Get the existing query and add in extra query args $query = array_merge( $wp_query->query, array( 'gdsr_sort' => 'thumbs', 'posts_per_page' => 10 ) ); // Apply our filter add_filter( 'posts_where', 'last_24_hours_filter_where' ); // Do our new query $wp_query = new WP_Query($query); // Remove the filter so not to effect anything else remove_filter( 'posts_where', 'last_24_hours_filter_where' ); function last_24_hours_filter_where($where = '') { // Alter query to only return posts in the last 24 hours return $where . " AND post_date > '" . date( 'Ymd H:i:s' , strtotime( '-24 hours' ) ) . "'"; }