0

我有一个名为“艺术家”的自定义分类法。我希望能够按如下方式显示艺术家:

[Main Artist / First in Array] ft. [Second Artists], [Third Artist] & [Last Artist]

我目前用来显示“艺术家”的代码是:

<?php $artists_links = get_the_term_list( $track->ID, 'artists', '', ' ', '' );
      $artists_withoutlinks = strip_tags( $artists_links );
      echo $artists_withoutlinks ?>

那么有人可以帮忙吗?总之,我想做的就是:

  • 将第一项之后的分隔符更改为“ft”。
  • 将最后一项之前的分隔符更改为“&”

显然我想将数据库调用保持在最低限度,并使查询尽可能快,非常感谢任何帮助。

4

1 回答 1

2

使用get_the_terms()而不是get_the_term_list(). 后者将术语提取到字符串中,而第一个创建术语数组。仍然只有一个查询。之后从数组中创建字符串:

<?php
    $artists = get_the_terms( $track->ID, 'artists' );
    $artist_string = '';
    $length = count($artists);
    for($i = 0; $i < $length; $i++) {
        $artist_string .= strip_tags( $artists[$i] );
        if ( $i == 0 )
            $artist_string .= ' ft. ';
        elseif ( $i == $length - 2 )
            $artist_string .= ' & ';
        elseif ( $i != $length - 1 )
            $artist_string .= ', ';
    }
    echo $artist_string;
?>
于 2011-11-16T01:41:58.830 回答