Intereting Posts
Как добавить теги shortcode в single.php functions.php включается дважды, создавая фатальные ошибки PHP Создайте нового пользователя из phpMyAdmin Пользовательская переписывание с помощью Query vars Как сохранить флажок в настраиваемом мета-окне для персонализированного типа сообщения, установленного по умолчанию для добавления нового сообщения? WP AJAX не работает, всегда возвращает 0 Есть ли способ сделать на главной странице только краткое описание полной статьи? Показывать авторов на основе двумерного массива Исключить детские термины из родительского периода Предложение базовой плагины галереи Как создать персонализированный пост изображения? Аутентификация oAuth2 в WordPress с использованием WP OAuth Server и плагинов WP API Проблемы с wp_redirect и current_user_can Лучший способ получить идентификатор пользователя для функции get_users? Заполненные сценарии и стили загружаются в панель инструментов WordPress.

Запрос между двумя значениями meta?

Как ограничить запрос двумя настраиваемыми мета-полями, датой начала и датой окончания? Вот как выглядят мои данные:

 meta_key |  meta_value |
 ------------------------ |
 start_date |  20100131 |  // 15 января 2010 г.
 end_date |  20100206 |  // Февраль 6, 2010
 ------------------------»

 $ today = date (YYYYMMDD);

Сообщение покажет, будет ли start_date = $today и он истечет, когда end_date = $today .

Обновить

Вот структура моего my.php

Первый запрос Я использую здесь ваш ответ

 <?php query_posts( $query_string ); if (have_posts()) : while (have_posts()) : the_post(); ?><a href="<?php the_permalink() ?>"><?php the_title() ?></a><br /><?php endwhile; endif; wp_reset_query(); ?> 

и Second Query с обычной функцией wordpress, но этот второй запрос не работает должным образом

 <?php query_posts('showposts=5&meta_key=start_date&meta_compare=>&meta_value='.date("Ymd")); if (have_posts()) : while (have_posts()) : the_post(); ?><a href="<?php the_permalink() ?>"><?php the_title() ?></a><br /><?php endwhile; endif; wp_reset_query(); ?> 

Solutions Collecting From Web of "Запрос между двумя значениями meta?"

Отредактировано снова, чтобы продемонстрировать добавление и удаление фильтров:

Включите эти общие функции в свои функции . Это фильтры, которые вы будете вызывать для циклов, где вы хотите ограничить свой запрос этими двумя метазначениями:

 function date_check_join( $join ) { global $wpdb; $join .= " JOIN ".$wpdb->postmeta." AS startdate ON (".$wpdb->posts.".ID = startdate.post_id AND startdate.meta_key = 'start_date') JOIN ".$wpdb->postmeta." AS enddate ON (".$wpdb->posts.".ID = enddate.post_id AND enddate.meta_key = 'end_date')"; return $join; } function date_check_where( $where ) { $today = date('Ymd'); $where .= " AND startdate.meta_value <= $today AND enddate.meta_value >= $today"; return $where; } 

Теперь, на странице (-ях), где вы хотите включить эти фильтры, добавьте их перед петлями, которые вы хотите отфильтровать, и удалить их позже. Например:

 add_filter( 'posts_join', 'date_check_join' ); add_filter( 'posts_where', 'date_check_where' ); query_posts( "yourqueryhere" ); if (have_posts()) : while (have_posts()) : the_post(); // This loop will only includes where today is between start_date and end_date endwhile; endif; query_posts( "anotherqueryhere" ); if (have_posts()) : while (have_posts()) : the_post(); // This loop also only includes where today is between start_date and end_date endwhile; endif; remove_filter( 'posts_join', 'date_check_join' ); remove_filter( 'posts_where', 'date_check_where' ); query_posts( "thirdqueryhere" ); if (have_posts()) : while (have_posts()) : the_post(); // This loop is not affected by the filters, so you can query for posts // where start_date is in the future, or end_date in the past, etc. endwhile; endif; 

Вам просто нужно добавить свои условия в фильтры «posts_join» и «posts_where» перед тем, как искать, и удалить их впоследствии (в противном случае эти условия будут применяться ко всему на вашем сайте, включая страницы, меню и т. Д.).

Если вы упростите это, сравнив только одно поле, вы можете использовать атрибут meta_compare встроенный в объект WP_Query. Вы можете планировать свои сообщения для start_date (чтобы они не отображались досрочно), а затем сравнивайте дату с пользовательским полем end_date при запросе.

Ответ на этот вопрос: как изменить петлю для упорядочения сообщений по представлениям (используя плагин wp-postviews), показывает, как сортировать по настраиваемому полю.

Взгляните на документы Codex для query_posts (): http://codex.wordpress.org/Template_Tags/query_posts и посмотрите разделы пользовательского поля.

Затем все, что вам нужно сделать, это включить тест в цикле, чтобы пропустить if ($ today <start_date или $ today> end_date)