【问题标题】:Custom loop not comparing metavalues properly自定义循环未正确比较元值
【发布时间】:2010-10-29 12:28:21
【问题描述】:

嗨,我有一个自定义循环,它应该只显示即将发生的事件,它没有考虑到年份,所以它显示未来的事件是过去的,因为只是月份和日期。

<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(); ?>

此模块的输出是“请稍后再回来查看新事件”,无论是否有可用的未来事件。

我已经搜索了这个东西几个小时,但无法找到它忽略年份的原因。有什么想法吗?

【问题讨论】:

    标签: php wordpress loops metadata


    【解决方案1】:

    在我看来,您将日期作为字符串而不是日期文字进行比较。而且因为您正在比较字符串,并将其设置为 mm/dd/yyyy,所以月份和日期的优先级高于年份。所以10/21/2014 小于10/22/2010

    您可能需要重新格式化 post_meta Date 格式才能进行准确的日期比较。最好的方法是使用yyyy-mm-dd hh:mm:ss,所以一切都按优先级递减的顺序排列。或者,您可以拆分 post_meta Date 并按顺序比较年、月、日和时间。

    【讨论】:

    • 是的,事实上它是作为一个字符串比较的,所以年份必须排在第一位。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多