Пользовательский цикл не сравнивает мета-значения должным образом

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

<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 и сравните год, месяц, день и время в указанном порядке.

Другие вопросы по тегам