Intereting Posts
Создание опции, позволяющей пользователю выбрать страницу, на которой будет отображаться мой контент плагина Сбросить Loop get_posts (); Динамические данные из внешней базы данных – отображаются на нескольких сайтах WP Простой SCript не отображается в WIdth Как получить несколько значений из многомерного массива в wp_options? WordPress Постоянная ссылка на знак вопроса (?) В URL-адресе Недопустимый корень подкаталога Multisite Как я могу установить и обновить значение the_date в соответствии с настраиваемым полем сообщения Использование wp_list_pages для создания 2 списков страниц и включения и исключения некоторых из них в зависимости от их категории Как изменить порядок лицевой страницы, чтобы он не отображался первым Это можно сделать из функции. Php Использование класса WPDB Как создать повторно используемый HTML-фрагмент в wordpress CONCAT_WS в пользовательском SQL-запросе Ссылка на функцию wp_schedule_event

Запрос между двумя значениями 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)