我想让函数通过查询 - >使用post ids post__in设置返回帖子,但该函数不返回任何内容。 这是代码:
add_action( 'pre_get_posts', 'query_booked_posts' );
function query_booked_posts( $query ) {
global $post,$wpdb;
$current_user_id = get_current_user_id();
if ( is_page(21) ) { //the condition, work fine
if ( is_home() && $query->is_main_query() )
$results = $wpdb->get_col($wpdb->prepare( "SELECT booked_id FROM $wpdb->userbooking WHERE userid = %d",$current_user_id));
$query->set ('post__in', array($results)); // pass results (post ids) to post__in
return $query;
}
}
由于
杰森
答案 0 :(得分:0)
请改为尝试:
add_action( 'pre_get_posts', 'query_booked_posts' );
function query_booked_posts( $query )
{
if ( is_page( 21 ) && is_user_logged_in() && $query->is_main_query() )
{
global $wpdb;
$results = $wpdb->get_col( $wpdb->prepare(
"SELECT booked_id FROM $wpdb->userbooking
WHERE userid = %d",
get_current_user_id() ) );
$query->set ( 'post__in', $results );
}
return $query;
}
我替换了:
$condition
与is_user_logged_in()
。$get_current_user_id
与get_current_user_id()
。 $results
周围的额外数组,因为get_col
方法返回一个数组。is_home()
检查,因为您还使用了is_page(21)
。希望它有所帮助。
答案 1 :(得分:0)
您可能还需要
if (!$query->is_main_query()) {
return $query;
}
如果您发现一些奇怪的结果。我通过答案评论中类似问题的链接找到了这个。