Wordpress查询和按日期排序

时间:2015-07-23 17:57:13

标签: php wordpress advanced-custom-fields

我试图创建一个包含10个产品的列表,这些产品的未来发布日期最近将被订购到最近。发布日期作为longtext存储在名为" publication_daet"的高级自定义字段中。以Ymd格式。我使用的代码如下,但结果不符合预期(结果低于代码块)。有什么想法吗?

<section id="recent">
<ul class="row-fluid">
    <?php

    $today = date('m/d/Y');

        $args = array(
     'post_type'        => 'product',
     'showposts' => 10,
     'meta_key'     => 'publication_date',
     'meta_value'   => $today,
     'meta_compare' => '>',
     'order' => 'ASC',
        );
        $loop = new WP_Query( $args );
        while ( $loop->have_posts() ) : $loop->the_post(); global $product; ?>

                <li class="span3">    

                    <a id="id-<?php the_id(); ?>" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">

                      <b><?php $date = DateTime::createFromFormat('Ymd', get_field('publication_date'));?><?php echo $date->format('m/d/Y'); ?></b>: <?php the_title(); ?>

                    </a>
                </li><!-- /span3 -->
    <?php endwhile; ?>
    <?php wp_reset_query(); ?>

</ul><!-- /row-fluid -->
</section><!-- /recent -->

结果:

2013年11月20日:首都

09/03/2015:孤儿黑卡游戏

07/10/2014:混乱的无政府主义之子的儿子

07/25/2013:Unicorno Frenzies

06/25/2015:中世纪学院

07/03/2014:Krosmaster Arena DuelPack

01/29/2015:已编辑

06/15/2010:3:16明星之间的大屠杀

04/29/2015:BattleTech Recon Lance Pack

2014/12/17:Duke Siege Engines Middle Ages

1 个答案:

答案 0 :(得分:0)

您的自定义字段中的日期格式是否正确。您的日期格式必须是unix时间戳或格式为Y-m-d

但是,今天的日期格式不正确。与date_query字段不同,自定义字段按字面比较,不会对任何值进行转换,因此要比较的值的格式必须匹配。简而言之,如果您的日期作为unix时间戳存储在自定义字段中,则您要比较的日期必须是unix时间戳,否则您的比较将失败。与日期格式相同,如果您的日期保存为Ymd,则您要比较的格式必须为Ymd。如果您的格式为Y-m-d,则您要比较的格式必须为Y-m-d。如果这些格式不匹配,那么您的比较将注定失败

要解决您的问题,请更改$today的值以匹配与自定义字段相同的格式