首页 > 解决方案 > 自定义 Wordpress 循环中的日期不正确

问题描述

我正在开发一个显示演出日期的自定义 Wordpress 循环。几乎一切正常,但是我无法将 ACF 日期拆分为单独的月份和日期跨度标签。

它似乎将一个日期应用于循环中的所有帖子,而不是每个帖子的单独日期。

我在想这可能是因为演出日期是在开始时获取的?我尝试在循环中获取演出日期,但这似乎也不起作用。

我的循环如下:

<ul class="dates>

    <?php 

        $today = date('Ymd');
        $date = new DateTime(get_field('gig-date'));

        $loop = new WP_Query( array( 
            'post_type' => 'gigs',
            'showposts' => 2,
            'meta_key' => 'gig-date',  
            'meta_compare' => '>',  
            'meta_value' => date("Ymd"),
            'orderby' => 'meta_value_num',
            'order' => 'ASC'
        ));

        while ( $loop->have_posts() ) : $loop->the_post(); { 
    ?>

        <li>
            <div class="date">
                <span class="day"><?php echo $date->format('d'); ?></span>
                <span class="month"><?php echo $date->format('M'); ?></span>
            </div>
        </li>

    <?php } endwhile; wp_reset_query(); ?>

</ul>

标签: phpwordpressadvanced-custom-fields

解决方案


我调整了循环并将日期请求放在 while 循环之后:

<?php 
    $today = date('Ymd');
    $loop = new WP_Query( array( 
        'post_type' => 'gigs',
        'showposts' => 2,
        'meta_key' => 'gig-date',  
        'meta_compare' => '>',  
        'meta_value' => date("Ymd"),
        'orderby' => 'meta_value_num',
        'order' => 'ASC'
    ));

    while ( $loop->have_posts() ) : $loop->the_post(); {

    $date = get_field('gig-date', false, false);
    $date = new DateTime($date);
?>

推荐阅读