我试图看到实现此功能的最佳方式。只要它们在日期参数范围内,我就会显示事件:
<?php $args = array(
'post_type' => 'events',
'orderby' => '_cmb_event_date_timestamp',
'meta_key' => '_cmb_event_date_timestamp',
'order' => 'ASC',
'meta_query' => array(
array( /* Timestamp query to hide old dates */
'key' => '_cmb_event_date_timestamp',
'value' => strtotime('today'),
'compare' => '>'
)
),
);
$q = new WP_Query($args);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); ?>
我有两个按钮:一个说upcoming events
,另一个说past events
。
我想在点击'compare' => '<'
时运行反向查询past events
,但我看不出如何最好地实现此功能。任何建议/方法来实现这一点将不胜感激。我尝试使用jquery重新加载但无法使其工作。
答案 0 :(得分:4)
你如何获得内容?阿贾克斯?如果不是 - 只需添加特定的$ _GET参数即可链接并在构建wp查询时捕获它。 E.g:
<?php $args = array(
'post_type' => 'events',
'orderby' => '_cmb_event_date_timestamp',
'meta_key' => '_cmb_event_date_timestamp',
'order' => 'ASC',
'meta_query' => array(
array( /* Timestamp query to hide old dates */
'key' => '_cmb_event_date_timestamp',
'value' => strtotime('today'),
'compare' => '>'
)
),
);
if (isset($_GET['past_events'])) {
$args['meta_query'][0]['compare'] = '<';
}
$q = new WP_Query($args);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); ?>
链接:
<a href="<?php echo esc_attr( add_query_arg( 'past_events', '' ) ); ?>">past events</a>
答案 1 :(得分:0)
两个简单的选择:
1)为使用该查询的“过去事件”创建一个新页面模板,只需将“过去事件”按钮链接到该页面(这是迄今为止最容易实现的)。
2)使用AJAX将请求发送到服务器,服务器然后可以运行查询并返回数据和/或HTML,然后使用jQuery在页面上更新(这是一项更多的工作,但不会导致要重新加载的页面。
Alex的回答也是解决问题的一个聪明而简单的解决方案。