这是不可能的WP_Query
直接开箱即用,但使用posts_where
用于查找自定义参数的筛选器WP_Query
, 可以添加此功能。
假设starts_with
是要使用的参数的名称,可以筛选posts_where
添加WHERE
子句将结果限制为以给定值开头的结果,如果starts_with
已在查询上设置:
function wpse_298888_posts_where( $where, $query ) {
global $wpdb;
$starts_with = esc_sql( $query->get( \'starts_with\' ) );
if ( $starts_with ) {
$where .= " AND $wpdb->posts.post_title LIKE \'$starts_with%\'";
}
return $where;
}
add_filter( \'posts_where\', \'wpse_298888_posts_where\', 10, 2 );
添加此过滤器后,我们可以查询如下帖子:
$query = new WP_Query( array(
\'starts_with\' => \'M\',
) );
将返回以“开始”开头的所有帖子;M";。
如果希望能够筛选主查询,也可以在中使用此参数pre_get_posts
:
function wpse_298888_pre_get_posts( $query ) {
if ( $query->is_main_query() ) {
$query->set( \'starts_with\', \'M\' );
}
}
add_action( \'pre_get_posts\', \'wpse_298888_pre_get_posts\' );