另一方面,\'caller_get_posts\'
已在版本3.1中弃用-使用\'ignore_sticky_posts\'
而是使用布尔参数。
\'exclude\'
不是查询参数,因此WordPress会忽略它。使用键通过查询进行后期排除\'post__not_in\'
而是使用单个post ID或ID数组。然而,正如@vancoder指出的那样,该参数会产生计算代价高昂的查询。
同时应用\'post__in\'
参数以及\'post__not_in\'
参数作为一个设置隐式地描述另一个的值。只要您希望同时使用这两种方法,就可以使用一种更简单、更高效的解决方案:只需从\'post__in\'
参数,然后将其应用于查询:
$included_post_ids = $wpdb->get_col( /* ... */ );
$excluded_post_ids = [ /* ids to exclude */ ];
if( !empty( $included_post_ids ) ) {
$included_post_ids = array_diff( $included_post_ids, $excluded_post_ids );
$args = [
\'post__in\' => $included_post_ids,
\'post_type\' => \'page\',
\'post_status\' => \'publish\',
\'posts_per_page\' => -1,
\'ignore_sticky_posts\' => true
];
$my_query = new WP_Query( $args );
// ....
}
有关查询参数的信息,请参阅
the WP_Query
reference on the Codex.