Пользовательский цикл не сравнивает мета-значения должным образом
Привет, у меня есть пользовательский цикл, который должен показывать только предстоящие события, не принимая во внимание год, поэтому он отображает будущие события как прошедшие из-за только месяца и даты.
<ul class="upcoming">
<?php // Get today's date in the right format
$todaysDate = date('m/d/y H:i:s');
?>
<?php query_posts('showposts=2&cat=9&meta_key=Date&meta_compare=>=&meta_value=' . $todaysDate . '&orderby=meta_value&order=ASC'); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : ?>
<?php the_post(); ?>
<li>
<?php
$Date = get_post_meta($post->ID, 'Date', true);
?>
<?php if ($Date) : ?>
<div class="date"><span class="month"> <?php echo date('M',strtotime($Date));?> </span>
<span class="day"><?php echo date('j',strtotime($Date));?> </span></div>
<?php endif; ?>
<h4 class="EventTitle"><a href="<?php the_permalink(); ?>" title="Permanent link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h4>
<span class="EventType"><?php
foreach((get_the_category()) as $childcat) {
$category_link = get_category_link(
$childcat );
if (cat_is_ancestor_of(10, $childcat)) {
if (in_category('13'))
echo "<a href=\"$category_link\">Workshop</a>";
else echo "<a href=\"$category_link\">$childcat->cat_name</a>";
}}
?>
</span>
</li>
<?php endwhile; ?>
<?php else : ?>
<p>Check back soon for new events.</p>
<?php endif; ?>
<?php wp_reset_query(); ?>
Выход для этого модуля - "Скоро проверять наличие новых событий", независимо от того, есть ли будущие доступные события.
Я искал эту вещь часами и не могу придумать причину, по которой он игнорирует год. Есть идеи?
1 ответ
Мне кажется, что вы сравниваете дату как строку, а не как литерал даты. А поскольку вы сравниваете строки и задаете их как мм / дд / гггг, месяц и дата имеют больший приоритет, чем год. Так 10/21/2014
меньше чем 10/22/2010
,
Возможно, вам придется переформатировать post_meta Date
формат, чтобы иметь возможность сделать точное сравнение даты. Лучший способ будет использовать yyyy-mm-dd hh:mm:ss
так что все в порядке уменьшения приоритета. С другой стороны, вы могли бы разбить post_meta Date
и сравните год, месяц, день и время в указанном порядке.