ANSWER REVISITED
我刚刚在SO上做了相同类型的答案,并选择了另一条比我原来的答案快得多的路线。我想,为了这个网站的利益,重新审视这个答案并发布我的新方法会很好。
这个name__like
的参数get_terms
已在Wordpress 3.7中更改。它不再检索具有指定首字母的术语名称,而是检索名称中任何位置具有指定字母的术语名称
此外,如果您要尝试运行代码26次,那么页面加载时间就会出现问题
这是我的方法和测试结果
Test results: 0.01074秒内查询1次。
Test output: (请注意,我的测试地点是南非荷兰语,所有名称都是术语名称)
Here is the code that makes it happen
$terms = get_terms(\'pa_manufacturer\');
if ( !empty( $terms ) && !is_wp_error( $terms ) ){
$term_list = [];
foreach ( $terms as $term ){
$first_letter = strtoupper($term->name[0]);
$term_list[$first_letter][] = $term;
}
unset($term);
echo \'<ul class="my_term-archive">\';
foreach ( $term_list as $key=>$value ) {
echo \'<h2 class="term-letter">\' . $key . \'</h2>\';
foreach ( $value as $term ) {
echo \'<li><a href="\' . get_term_link( $term ) . \'" title="\' . sprintf(__(\'View all post filed under %s\', \'my_localization_domain\'), $term->name) . \'">\' . $term->name . \'</a></li>\';
}
}
echo \'</ul>\';
}
HOW THE CODE WORKS
这里最好的方法是一次性获得所有术语,以避免不必要的db命中。现在可以通过
get_terms
通过
foreach
环
在这里,你要诉诸你的条款。首先要做的是创建一个新数组,$term_list
, 获取每个术语名称的第一个字母,然后将此字母指定为新数组中的键。每个键的值将包含一个术语信息数组
这个新数组将用于显示每个字母下的术语名称,如上图所示。