仅限于字母X
从动态角度来看,以下各项应该可以工作。这取决于以下事实:WP_Query
将允许特殊参数通过。您可以将自己的数据发送到过滤器。我不知道这是否是故意的行为,所以请注意,但这是非常有用的行为。
只需通过substring_where
参数并让过滤器工作。有两个版本,一个使用SUBSTRING
就像你想做的那样LIKE
. 我不知道哪一个更快,尽管它们看起来很接近。
我还使用$wpdb->prepare
但这可能没有必要。这取决于数据的来源。
$args = array (
\'post_type\' => \'post\',
\'ignore_sticky_posts\' => true,
\'substring_where\' => \'t\',
);
function restrict_by_first_letter( $where, $qry ) {
global $wpdb;
$sub = $qry->get(\'substring_where\');
if (!empty($sub)) {
$where .= $wpdb->prepare(
" AND SUBSTRING( {$wpdb->posts}.post_title, 1, 1 ) = %s ",
$sub
);
// $where .= $wpdb->prepare(
// " AND {$wpdb->posts}.post_title LIKE %s ",
// $sub.\'%\'
// );
}
return $where;
}
add_filter( \'posts_where\' , \'restrict_by_first_letter\', 1 , 2 );
$results = new WP_Query( $args );
var_dump($results->request); // debug
var_dump(wp_list_pluck($results->posts,\'post_title\')); // debug