在ACF自定义日期选择器字段中按月过滤帖子

时间:2015-10-13 18:22:27

标签: wordpress filtering advanced-custom-fields

我有一个日期选择器ACF自定义字段,用户在创建新帖子时选择事件日期。我在页面上显示所有帖子,并按此活动日期订购。我需要的是帖子上方的过滤器选项,您可以选择月份以仅查看当月发生的事件。 这是我的代码:

<?
/*
*  Order Posts based on Date Picker value
*  this example expects the value to be saved in the format: yymmdd (JS) = Ymd (PHP)
*/

$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;   
query_posts(array(
    'paged' => $paged,
    'posts_per_page'=>12,
    'meta_key' => 'event_date', // name of custom field
    'orderby' => 'meta_value_num',
    'order' => 'DSC',
    'pagination' => 'true',
    'cat' => '2'
));
?>

    <div class="filter">
        <a>January</a>
        <a>February</a>
        ...etc...
    </div>


<ul>

<?php if ( have_posts() ) : ?>

    <?php while ( have_posts() ) : the_post(); ?>

                <li id="post-<?php the_ID(); ?>">
                    <div>
                        <?php 
                            $date = get_field('event_date');
                            $dateformat = date("F j, Y", strtotime($date));
                        ?>
                        <p class="date"><?php echo $dateformat; ?> </p>
                        <h4><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h4>
                    </div>
                </li>


<?php endwhile; ?>
<?php else : ?> 
<?php endif; ?>
</ul>

    <?php wp_reset_query(); ?>

1 个答案:

答案 0 :(得分:0)

add_action( 'pre_get_posts', 'upcoming_events_order'); 
function upcoming_events_order( $query ) {
if( $query->is_post_type_archive('event') ) :
    $query->set( 'order', 'ASC' );
    $query->set( 'orderby', 'meta_value' );
    $query->set( 'meta_query', array( array( 'key' => 'event_date', 'value' => date('Ymd'), 'compare' => '>=', 'type' => 'DATE' ) ) );
    $query->set( 'meta_key', 'event_date' );
    $query->set( 'meta_value_num', 'DATE');
endif;    
};