оператор switch для контента таксономии

Я пытаюсь проверить, соответствует ли таксономия в столбце строке, однако мой код не работает, и он всегда выводит первый элемент.

$i=get_the_term_list($post->ID,'tax-athlete'); switch (has_term( $i, 'athlete' )) { case "John Doe": echo "john"; break; case "Mark Webber": echo "mark"; break; case "Jane Smith": echo "jane"; break; default: echo "author"; } 

Мой обычный код просто отображает работу спортсмена.

 <?php echo get_the_term_list($post->ID,'athlete','Athlete: ',', ',''); 

Ваш код перевернут и скремблирован. То, что вы хотели бы сделать, это проверить определенный термин и затем get_the_term_list() в get_the_term_list() , а не наоборот. Кроме того, оцените ваш переключатель в true.

Я бы, вероятно, сначала получил массив терминов, прикрепленных к сообщению, а затем проверить, является ли мой желаемый термин в этом массиве, чтобы сделать мой оператор немного более эффективным. Для этого я буду использовать wp_get_post_terms() и получаю только имена терминов, как кажется, если это то, что вы тестируете против

С этим, как говорится, вы можете попробовать что-то вроде этого; ( CAVEAT: Untested )

 $terms = wp_get_post_terms( $post->ID, 'TAXONOMY NAME', array( 'fields' => 'names' ) ); switch (true) { case in_array( 'John Doe', $terms ): $name = 'john'; break; case in_array( 'Mark Webber', $terms ): $name = 'mark'; break; case in_array( 'Jane Smith', $terms ): $name = 'jane'; break; default: $name = 'author'; } echo get_the_term_list( $post->ID, 'TAXONOMY NAME', $name, ', ' );