如前所述,使用 LIKE 意味着它将匹配包含该字母的任何值,无论该字母是否位于开头。所以使用 LIKE 可能不会得到你想要的。
WordPress 中的方法似乎是使用“BETWEEN”比较,因此它将匹配单词介于一个字母和后续字母之间的任何值。
根据http://www.essentialwp.com/tag/meta_query/上的教程,您可以获取您希望单词开头的字符,然后使用 PHP 功能查找后续字符,这使您可以正确过滤结果。
// Get the value for surname and attach it to a variable
$letter = $_GET['surname'];]
// We need to establish the letter after the first letter from $letter, so in this case 'D'
$letterAfter = chr(ord($letter)+1);
// Craft a custom wp_query call
$args = array(
'post_type' => 'profiles', // use this if you are using a custom post type
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'surname', // name of your custom field
'value' => array( $letter, $letterAfter ),
'orderby' => 'meta_value',
'compare' => 'BETWEEN',
'order' => 'ASC'
)
)
);
$wp_query = new WP_Query( $args );
// then run your loop....
您可能需要以不同的方式处理字母 Z,请参阅Get the users by first name start with letter “Z”</a>
您可能还对使用 PHP 获取字母表中下一个字母的最有效方法感兴趣