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()ます。後者は用語を文字列にフェッチするのに対し、最初は用語の配列を作成します。まだクエリは 1 つだけです。その後、配列から文字列を作成します。

<?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 に答える