Intereting Posts
Как отслеживать, кто удалил файлы Как удалить стили CSS по умолчанию на странице wp-login.php? Проблема с WordPress после обновления Получение списка категорий для использования в плагине? Отображать избранные сообщения для пользовательского типа сообщений по таксономии Список авторов Пагинация: набор результатов из $ wpdb-> get_results () Функция для эхо (или отображения?) Тегов wordpress в разделе заголовка Перенаправление после пустой регистрационной формы Перемещение с клавиатуры в Shortcode галереи Таблица стилей PHP не может использовать стандартные функции WP Сохранять значения, сгенерированные через API, как настраиваемые метаполя get_terms () не возвращает пустые слова, хотя hide_empty false Установка плагина для комментариев Facebook без потери всех предыдущих комментариев в WordPress? Страница для печати со всеми сообщениями из тега ненужный запрос вызова для js и css после вызова wp_dequeue_script

Отображение события в течение двух заданных временных рамок

Я пытаюсь отобразить два разных сообщения из моего CPT с именем Events.

Одно будет следующим событием, другим будет предыдущее событие.

У меня есть метабокс под названием «Дата события». Клиент в данный момент назначает дату события.

Я думаю о том, чтобы каким-то образом использовать эту дату в качестве «прерывателя», если она была записана в формате DMY и эта дата прошла, то это событие не будет отображаться в следующем событии, вроде даты истечения срока действия.

Поэтому мне нужно будет запросить сообщения до ближайшей даты, отображаемой в метабоксе, и отобразить эту запись как следующее событие.

Вот как логика будет работать у меня в голове, однако я не могу найти правильный ступень, чтобы начать.

Извините, если это не очень понятно.

Запрос в таблице метаданных медленный, и поскольку, поскольку он также используется для общих данных, вы должны быть осторожны в своем формате даты, если вы там сохраняете даты. Например, с форматом dmY :

  • 01112014 (1 ноября 2014 года)
  • 11012014 (11 января 2014 года)
  • 12052014 (12 мая 2014 года)

является «правильным» в том, что цифры отсортированы правильно, но дает вам неправильный порядок, хронологически (обычно это то, что вы хотите с событиями).

Поэтому, если вы используете postmeta, вы должны использовать либо Ymd метку, либо формат Ymd . Предполагая, что вы можете получить следующее событие:

 $args = array( 'post_type' => 'event', 'posts_per_page' => 1, 'meta_query' => array( array( 'key' => 'date', //or whatever key you're using 'value' => date_i18n( 'Ymd' ), 'compare' => '>=' ) ), 'orderby' => 'meta_value', 'meta_key' => 'date', //or whatever key you're using 'order' => 'asc', ); $events = get_posts( $args ); if( $events ){ $next_event = array_pop( $events ); }else{ //no event found } 

Тем не менее, лучше избегать метаданных сообщений (для проблем с производительностью – это еще хуже для повторяющихся событий, если вам когда-нибудь понадобится). Кроме того, есть куча разных плагинов управления событиями ( я создал: Event Organizer ), которые не только обрабатывают все это для вас, но и предоставляют пользовательский интерфейс для пользователя, а не используют настраиваемые поля.

С помощью Event Organizer вы можете получить следующее событие:

 $events = eo_get_events( array( 'event_start_after' => 'now', 'posts_per_page' => 1 )); if( $events ){ $next_event = array_pop( $events ); }