Функция возвращает массив объектов элементов таксономий WP_Term
в случае успеха, пустой массив, если терминов по заданному критерию не найдено или же объект ошибки WP_Error, если таксономия $taxonomy
не существует.
wp_get_post_terms( $post_id = 0, $taxonomy = 'post_tag', $args = array() )
Параметры
- $post_id
- (целое число) ID поста, элементы таксономий которого нужно получить. Функция не использует ID текущего поста в цикле. Если не указать этот параметр, то функция вернёт пустой массив.
- $taxonomy
- (строка|массив) Одна или несколько таксономий, элементы которых нужно получить.
- $args
- (массив) Массив аргументов, можно использовать любые параметры функции get_terms(). В целом этот параметр и является фишкой этой функции, если вы его не задаёте, то используйте лучше get_the_terms().
Примеры работы с функцией wp_get_post_terms()
1. Используем различные значения параметра fields
Параметр fields позволяет задать, что именно должна возвращать функция, по умолчанию он равен значению all
– массив объектов WP_Term
.
Глянем другие варианты в коде:
// Получаем массив объектов элементов таксономии "true_taxonomy". $term_list = wp_get_post_terms( $post->ID, 'true_taxonomy', array( 'fields' => 'all' ) ); print_r( $term_list ); /* в этой ситуации в результате мы получаем массив объектов: Array( [0] => stdClass Object( [term_id] => 1 [name] => Италия [slug] => italia [term_group] => 0 [term_taxonomy_id] => 1 [taxonomy] => true_taxonomy [description] => [parent] => 0 [count] => 75 ) [1] => stdClass Object( [term_id] => 4 [name] => Эстония [slug] => estonia [term_group] => 0 [term_taxonomy_id] => 4 [taxonomy] => true_taxonomy [description] => [parent] => 0 [count] => 51 ) ) */ // Получаем массив из названий элементов таксономии "true_taxonomy". $term_list = wp_get_post_terms( $post->ID, 'true_taxonomy', array( 'fields' => 'names' ) ); print_r( $term_list ); /* результат будет выглядеть так, да, обычный одномерный массив из названий элементов таксономий Array( [0] => Италия [1] => Эстония ) */ // Получаем массив ID элементов таксономии "true_taxonomy". $term_list = wp_get_post_terms( $post->ID, 'true_taxonomy', array( 'fields' => 'ids' ) ); print_r( $term_list ); /* Массив из ID элементов таксономий Array ( [0] => 1 [1] => 4 ) */
2. Выводим элементы таксономий в виде маркированного списка и через запятую
С маркированным списком всё супер-легко:
$term_list = wp_get_post_terms( $post->ID, 'true_taxonomy' ); if( $term_list ) { echo '<ul>'; foreach( $term_list as $term ) { echo '<li><a href="' . get_term_link( $term ) . '">' . $term->name . '</a></li>'; } echo '</ul>'; }
Чуть поинтереснее в ситуации, когда нужно вывести элементы таксономи через запятую:
$term_list = wp_get_post_terms( $post->ID, 'true_taxonomy' ); if( $term_list ) { $terms = array(); foreach( $term_list as $term ) { $terms[] = '<a href="' . get_term_link( $term ) . '">' . $term->name . '</a>'; } echo join( ', ', $terms ); }