将未来的帖子过滤器应用于 wordpress get_posts
Applying future posts filter to wordpress get_posts
我正在尝试使用 get_posts 在 wordpress 页面中显示前三个未来 post 预览,所以我做到了:
/* function.php */
function filter_where( $where = '' ) {
global $wp_query;
if (is_array($wp_query->query_vars['post_status'])){
if ( in_array('publish',$wp_query->query_vars['post_status'])){
// posts today into the future
$where .= " AND post_date > '" . date('Y-m-d', strtotime('now')) . "'";
}
}
return $where;
}
function textdomain_future_posts( $query ) {
//$query->set('numberposts','3');
//$query->set('category','1');
//$query->set('post_status','publish');
$query->set('orderby','post_date');
$query->set('order','ASC');
add_filter('posts_where','filter_where');
return $query;
}
/* index.php */
global $post;
add_action('pre_get_posts','textdomain_future_posts');
$myposts = get_posts('numberposts=3&category=1');
$i=1;
foreach($myposts as $post) :
setup_postdata($post);
.
.
.
.
但看起来它并没有真正过滤日期 > 今天....我可能错过了什么吗?
提前致谢!
干杯
路易吉
pre_get_posts
应该用于修改主循环而不是 get_posts()
。
请尝试以下操作:
$myposts = get_posts( array(
'cat' => 1,
'no_found_rows' => true,
'order' => 'ASC',
'order_by' => 'post_date',
'posts_per_page' => 3,
'post_status' => 'future',
) );
在这里您不需要使用自定义的 where 查询。您收到 3 个标记为未来的帖子,按日期(升序)排序。
OK我自己解决了:
我输入了functions.php这个函数:
function show_future_posts($posts)
{
global $wp_query, $wpdb;
if(is_single() && $wp_query->post_count == 0)
{
$posts = $wpdb->get_results($wp_query->request);
}
return $posts;
}
add_filter('the_posts', 'show_future_posts');
所以通过这种方式我可以用 get_posts('...post_status=future..'); 列出未来的帖子并毫无问题地打开它们
感谢大家
干杯,
路易吉
我正在尝试使用 get_posts 在 wordpress 页面中显示前三个未来 post 预览,所以我做到了:
/* function.php */
function filter_where( $where = '' ) {
global $wp_query;
if (is_array($wp_query->query_vars['post_status'])){
if ( in_array('publish',$wp_query->query_vars['post_status'])){
// posts today into the future
$where .= " AND post_date > '" . date('Y-m-d', strtotime('now')) . "'";
}
}
return $where;
}
function textdomain_future_posts( $query ) {
//$query->set('numberposts','3');
//$query->set('category','1');
//$query->set('post_status','publish');
$query->set('orderby','post_date');
$query->set('order','ASC');
add_filter('posts_where','filter_where');
return $query;
}
/* index.php */
global $post;
add_action('pre_get_posts','textdomain_future_posts');
$myposts = get_posts('numberposts=3&category=1');
$i=1;
foreach($myposts as $post) :
setup_postdata($post);
.
.
.
.
但看起来它并没有真正过滤日期 > 今天....我可能错过了什么吗?
提前致谢! 干杯 路易吉
pre_get_posts
应该用于修改主循环而不是 get_posts()
。
请尝试以下操作:
$myposts = get_posts( array(
'cat' => 1,
'no_found_rows' => true,
'order' => 'ASC',
'order_by' => 'post_date',
'posts_per_page' => 3,
'post_status' => 'future',
) );
在这里您不需要使用自定义的 where 查询。您收到 3 个标记为未来的帖子,按日期(升序)排序。
OK我自己解决了:
我输入了functions.php这个函数:
function show_future_posts($posts)
{
global $wp_query, $wpdb;
if(is_single() && $wp_query->post_count == 0)
{
$posts = $wpdb->get_results($wp_query->request);
}
return $posts;
}
add_filter('the_posts', 'show_future_posts');
所以通过这种方式我可以用 get_posts('...post_status=future..'); 列出未来的帖子并毫无问题地打开它们
感谢大家
干杯, 路易吉