истекает WordPress сообщения в запросе - не цикл - PullRequest
0 голосов
/ 28 июня 2011

В настоящее время я использую следующий код для истечения срока действия и скрытия сообщений после моего настраиваемого поля 'date' в цикле (что работает нормально):

<?php
while (have_posts()) : the_post();
//to check against expiration date;
$currentdate = date("Ymd");
$expirationdate = get_post_custom_values('date');
if (is_null($expirationdate)) {
$expirestring = '30005050'; //MAKE UN-EXPIRING POSTS ALWAYS SHOW UP;
} else {
if (is_array($expirationdate)) {
$expirestringarray = implode($expirationdate);
}
$expirestring = str_replace("/","",$expirestringarray);
} //else
if ( $expirestring >= $currentdate ) { 
// post loop contents
} ?>

Я хочу отфильтровать сообщениязапрос вместо этого - это возможно.У меня есть плагин, который генерирует карту Google на основе результатов запроса, а не цикла - у кого-нибудь есть идеи?вот мой текущий запрос

<?php query_posts($query_string.'&order=asc&orderby=meta_value&meta_key=date');
if (have_posts()) : ?>

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

1 Ответ

0 голосов
/ 28 июня 2011

Попробуйте это:

<?php

 $querystr = "
    SELECT wposts.* 
    FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
    WHERE wposts.ID = wpostmeta.post_id 
    AND wpostmeta.meta_key = 'date' 
    AND wpostmeta.meta_value < CURRENT_DATE
    AND wposts.post_status = 'publish' 
    AND wposts.post_type = 'post' 
    ORDER BY wposts.post_date DESC, wpostmeta.meta_value DESC
 ";

 $pageposts = $wpdb->get_results($querystr, OBJECT);

 ?>

Я предполагаю, что мета-значение для мета-ключа 'date' хранится в формате mysql ('YYYY-MM-DD').Если нет, вы можете попробовать использовать функции mysql даты и времени для соответствующего форматирования.

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

 <?php if ($pageposts): ?>
 <?php global $post; ?>
 <?php foreach ($pageposts as $post): ?>
 <?php setup_postdata($post); ?>
 <h2><?php echo $post->title; ?></h2>
 <?php endif; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...