我有一个使用以下查询的事件页面:
<?php $portfolioloop = new WP_Query( array( 'post__not_in' => array(4269), 'paged' => get_query_var('paged'), 'post_status' => 'future', 'post_type' => 'whatson', 'exclude' => '4269', 'posts_per_page' => 20, 'order' => 'ASC')); ?>
所有这一切都显示了所有预定的自定义帖子列表,当帖子点击预定日期时,它会发布页面...从而将其从列表中删除。
这几乎是我想要的,当它到达发布日期时,事件实际上是在那一天运行,所以将其从列表中删除是不正确的。
有没有办法可以延迟将其从列表中移除,直到当天结束?
p.s我不想使用插件,因为我认为它不保证。
我发现了这个:
$args = array(
'posts_per_page' => 3,
'meta_key' => 'event-start-date',
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_query' => array(
array( 'key' => 'event-end-date', 'compare' => '>=', 'value' => date('Y-m-d') )
)
);
query_posts($args);
我不想按自定义字段排序,那么如何在发布日期之前完成呢?
答案 0 :(得分:1)
你不能只是在查询中添加post_date WHERE语句来搜索帖子吗?然后必须从查询中删除post_status,因此:
<?php $query_string = array( 'post__not_in' => array(4269), 'paged' => get_query_var('paged'), 'post_type' => 'whatson', 'exclude' => '4269', 'posts_per_page' => 20, 'order' => 'ASC'); ?>
// Create a new filtering function that will add our where clause to the query
function filter_where( $where = '' ) {
$end_of_day = date('Y-m-d') . ' 23:59:59';
$where .= " AND post_date < '$end_of_day' ";
return $where;
}
add_filter( 'posts_where', 'filter_where' );
$query = new WP_Query( $query_string );
remove_filter( 'posts_where', 'filter_where' );
答案 1 :(得分:0)
最后用以下方法解决了这个问题:
function my_filter_where( $where = '' ) {
global $wp_query;
if (is_array($wp_query->query_vars['post_status'])) {
if (in_array('future',$wp_query->query_vars['post_status'])) {
// posts today into the future
$where .= " AND post_date > '" . date('Y-m-d', strtotime('now')) . "'";
}
}
return $where;
}
add_filter( 'posts_where', 'my_filter_where' );
和
<?php
$wp_query = array(
'post__not_in' => array(4269),
'paged' => get_query_var('paged'),
'post_type' => 'whatson',
'exclude' => '4269',
'posts_per_page' => 20,
'order' => 'ASC',
'orderby' => 'date',
'post_status' =>array('future','published'));
query_posts($wp_query);
?>
<?php
if ($wp_query->have_posts()) {
while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
Content
<?php endwhile; // end of the loop.
} ?>
<?php if (function_exists('wp_pagenavi')) { wp_pagenavi( array( 'query' => $wp_query ) ); } ?>