Intereting Posts
Вложение Метаданные внутри цикла Сообщения не отображаются в определенной категории Можно ли прикрепить изображение к другому сообщению? Вставить содержимое сообщения в другое Вставьте первое изображение в сообщение (полная ширина) Что происходит с лицензией GPL, когда к ней добавляются коммерческие элементы? WordPress перед сохранением / обновлением Массовое перемещение пользователей с одного сайта на другой в сети (Multisite) Настройка стажа для многоузловой установки Как назначить роли переменной, которая будет использоваться в функции плагина? Как удалить пользовательский тип сообщения из URL-адреса Как вы можете продемонстрировать премиальные темы клиентам без предварительной покупки темы? Как «отменить публикацию» или «скрыть» сообщения при изменении роли пользователя? Какой $ handle использует WordPress для неявного style.css темы? Безопасно говорить, что в версиях безопасности WordPress нет обновлений базы данных

Как показать список сообщений с настраиваемым значением поля (датой), которое скоро появится

У меня есть пользовательский тип сообщения, называемый client и у него есть настраиваемое поле next_due_date , то есть дата без времени. Я хочу иметь список сообщений, у которых есть следующий срок, который скоро появится. Я попытался создать шаблон страницы под названием «в ближайшее время» с этим кодом (включая изменения, предложенные Тимом Мэлоуном):

 $loop = new WP_Query(array( 'post_type' => 'client', 'posts_per_page' => -1, 'orderby' => 'meta_value_num', 'order' => 'ASC', 'meta_key' => 'next_due_date', 'meta_query' => array(array( 'key' => 'meta_value_num', 'value' => date('YY-mm-dd',strtotime("today")+(7*60*60*24)), 'compare' => '<=', 'type' => 'DATE' )) )); while ( $loop->have_posts() ) : $loop->the_post(); responsive_entry_before(); ?> <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <?php responsive_entry_top(); ?> <h2 class="entry-title post-title"><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h2> <div class="post-entry"> <?php echo "File # : " . get_post_meta($post->ID,'file_number',true) . "<br />"; ?> <?php echo "File Status : " . get_post_meta($post->ID,'file_status', true) . "<br />"; ?> </div><!-- end of .post-entry --> <div class="post-meta"> <?php responsive_post_meta_data(); ?> <?php if ( comments_open() ) : ?> <span class="comments-link"> <span class="mdash">&mdash;</span> <?php comments_popup_link( __( 'No Comments &darr;', 'responsive' ), __( '1 Comment &darr;', 'responsive' ), __( '% Comments &darr;', 'responsive' ) ); ?> </span> <?php endif; ?> </div><!-- end of .post-meta --> ________________________________ <?php responsive_entry_bottom(); ?> </div><!-- end of #post-<?php the_ID(); ?> --> <?php responsive_entry_after(); endwhile; 

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

Вот код, который я использую, чтобы подсчитывать типы сообщений и те, которые открыты для открытия поля:

 global $wpdb; $meta_key = 'file_status'; $meta_value = 'open'; $sql = "SELECT count(DISTINCT pm.post_id) FROM $wpdb->postmeta pm JOIN $wpdb->posts p ON (p.ID = pm.post_id) WHERE pm.meta_key = '$meta_key' AND pm.meta_value = '$meta_value' AND p.post_type = 'client' AND p.post_status = 'publish' "; $count = $wpdb->get_var($sql); $count_posts = wp_count_posts('client'); $published_posts = $count_posts->publish; echo "Number of Clients: " . $published_posts; echo "<p>Open Files: $count</p>"; 

Я бы тоже хотел сосчитать те, у кого были сроки

Во-первых, the_post() самом деле ничего не выводит – он просто устанавливает данные сообщения, готовые к выходу. Вам нужно будет сделать что-то подобное, чтобы показать сообщения:

 <?php while ( $loop->have_posts() ) : $loop->the_post(); the_title(); the_content(); endwhile; ?> 

Есть еще несколько тегов, которые вы можете использовать, и вы захотите отформатировать HTML вокруг них, чтобы отобразить, как вы хотите, сообщите мне, если вам понадобятся указания по этому поводу.

Что касается запроса, вы, вероятно, найдете это очень полезным: http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters

Вы очень близки к заказу, но чтобы ограничить количество сообщений, возвращаемых на что-либо в течение следующих 7 дней, вам нужно будет использовать meta_query. Вот как вы это делаете:

 <?php $loop = new WP_Query(array( 'post_type' => 'client', 'posts_per_page' => -1, 'orderby' => 'meta_value_num', 'order' => 'ASC', 'meta_key' => 'next_due_date', 'meta_query' => array(array( 'relation'=> 'AND', array( 'key' => 'next_due_date', 'value' => date('Ym-d',strtotime("today")+(7*60*60*24)), 'compare' => '<=', 'type' => 'DATE' ), array( 'key' => 'next_due_date', 'value' => date('Ym-d',strtotime("today")), 'compare' => '>=', 'type' => 'DATE' ) )) )); ?> 

Я не тестировал этот код, но я думаю, что это правильно – дайте мне знать, как вы идете. 7 дней определяется 7*60*60*24 – 60 секунд x 60 минут x 24 часа x 7 дней.

ОБНОВЛЕНО в соответствии с комментариями, чтобы отфильтровать сообщения в прошлом