我有一个日期选择器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(); ?>
答案 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;
};