事件日期的ACF中继器。根据后续中继字段中的多个日期重复发布循环

时间:2018-01-18 16:17:03

标签: php wordpress loops events advanced-custom-fields

我目前查询"事件"查找ACF event_date字段的类别。

我可以使用ACF Repeater选项将多个事件日期添加到单个帖子,然后更新查询,以便它在循环中多次重复同一个帖子中多个事件日期根据与帖子相关的事件日期订购?

是否可以,使用ACF转发器在多个事件日期重复循环中的帖子?

使用单个event_date字段进行当前查询。

<?php 
    $args = array(
        'post_type' => 'post',
        'tax_query' => array(
            array(
                'taxonomy' => 'category',
                'field' => 'slug',
                'terms' => 'events'
            )
        ),
        'meta_query' => array(
            array(
                'key'     => 'event_date',
                'value'   => date("Y-m-d"),
                'compare' => '>',
            ),
        ),
        'posts_per_page' => 5,
        'meta_key' => 'event_date',
        'orderby' => 'meta_value',
        'meta_type' => 'NUMERIC',
        'order' => 'ASC'
    );
    $query = new WP_Query( $args );
    ?>

    <?php if ( $query->have_posts() ) : ?>

    <!-- the loop -->
    <?php while ( $query->have_posts() ) : $query->the_post(); ?>

        <?php 
            $date = null;
            if( get_field("event_date") ){
                $date = date_format( date_create( get_field("event_date") ), "F j, Y" );
            }
        ?>
        <div class="program-event-wrapper">
        <?php if( $date): ?>
            <h5><?php echo $date; ?></h5>
        <?php endif; ?>
            <p>
                <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
            </p>
        </div>
    <?php endwhile; ?>
    <!-- end of the loop -->

    <?php //wp_reset_postdata(); ?>


    <?php endif; ?>

1 个答案:

答案 0 :(得分:-1)

我想我已经衡量了你的目标。

<?php if( have_rows('your_repeater_field_name') ): ?>

    <p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p>

    <?php while ( have_rows('your_repeater_field_name') ) : the_row(); ?>

        <?php 
            $date = null;
            if( get_sub_field("event_date") ){
                $date = date_format( date_create( get_sub_field("event_date") ), "F j, Y" );
            }
        ?>

        <div class="program-event-wrapper">
            <?php if( $date): ?>
                <h5><?php echo $date; ?></h5>
            <?php endif; ?>
        </div>

    <?php endwhile; ?>

<?php endif; ?>

我为您的日期创建了ACF中继器,如果至少存在一个日期,则会显示标题和链接。然后,ACF转发器将遍历每一行并获取子字段(名为event_date)并将其附加到您的变量,您将运行您提供的代码以回显日期,所有这些都在ACF while循环中。

仅供参考,您可以使用转发器字段名称替换your_repeater_field_name

我希望这是有道理的但请告诉我你是否需要扩展(如果我已经正确评估了你的内容)。