按姓氏按字母顺序排列 Wordpress 分类法列表

Alphabetize Wordpress taxonomy list by last name

我有一个查询输出分类标签列表,按名字组织,标题按字母顺序排列,如下所示:

E

埃琳娜·费兰特

H

海伦·德薇特

J

琼·迪迪恩

乔纳森·弗兰岑

K

石黑一雄

M

玛吉尼尔森

P

柏拉图

R

雷切尔·卡斯克

罗伯托·波拉尼奥

S

希拉·赫蒂

等等


如何按姓氏而不是名字按字母顺序排列此分类标签列表? 所以结果将是:

B

罗伯托·波拉尼奥

C

雷切尔·卡斯克

D

海伦·德薇特

琼·迪迪恩

F

埃琳娜·费兰特

乔纳森·弗兰岑

H

希拉·赫蒂

石黑一雄

P

柏拉图

N

玛吉尼尔森

等等


这里是查询:

    <?php       
    $list = '';
    $groups = array();
    $tags = get_terms('authors',$args);
    if( $tags && is_array( $tags ) ) {
        foreach( $tags as $tag ) {
            $first_letter = strtoupper( $tag->name[0] );
            $groups[ $first_letter ][] = $tag;
        }
        if( !empty( $groups ) ) {
            foreach( $groups as $letter => $tags ) {
                $list .= "<div class='titleLetter'>" . $letter . "</div><ul>";
                foreach( $tags as $tag ) {
                    $list .= '<li><a href="/authors/'.$tag->slug.'">'.$tag->name.'</a></li>';
                }
                $list .= '<br></ul>';
            }
            $list .= '';
        }
    }
    echo $list;  ?>

如果给定的代码适用于名字排序。那么这个将适用于按姓氏排序。

<?php       
$list = '';
$groups = array();
$tags = get_terms('authors',$args);
if( $tags && is_array( $tags ) ) {
    $i=0;
    foreach( $tags as $tag ) {
        $lastname_arr=explode(' ', $tag->name);
        $lastname=$lastname_arr[count($lastname_arr)-1];
        $first_letter = strtoupper( $lastname[0] );
        $groups[ $first_letter ][$lastname.'_'.$i] = $tag;
        $i++;
    }
    foreach($groups as $key=>$group ){
        ksort($groups[$key]);
    }
    ksort($groups);
    if( !empty( $groups ) ) {
        foreach( $groups as $letter => $tags ) {
            $list .= "<div class='titleLetter'>" . $letter . "</div><ul>";
            foreach( $tags as $tag ) {
                $list .= '<li><a href="/authors/'.$tag->slug.'">'.$tag->name.'</a></li>';
            }
            $list .= '<br></ul>';
        }
        $list .= '';
    }
}
echo $list;  
?>

我在这里做的是:

  • 用姓氏的首字母替换数组索引。
  • 将 ksort(按键排序)函数应用于数组和子数组(以便在新索引上创建自定义 orderby)