Intereting Posts
Как удалить слово из URL-адреса в WordPress с помощью .htaccess? Показать только сообщения за последние 12 месяцев Как запретить пользователю регистрироваться с определенным словом в имени пользователя? Добавьте пользовательскую вкладку рядом с параметрами экрана и справкой Почта через электронную почту – Как отправить вложения с ней (например, PDF-файл или JPEG-изображение)? Пользовательский смена даты post_date => future – ошибка пропущенного расписания Добавить пользовательский столбец в пользовательский тип типа сообщений в бэкэнд FTP или Cpanel установка WordPress Различные размеры миниатюр для галереи каменных кладок WordPress / jquery Нужно ли проверять `content-type` в заголовках? Есть ли ограничение на приоритет? Как отобразить только подкатегорию Функция для предотвращения сбоев пользователей WordPress отключает косую черту при импорте Перевод пользовательской таксономии

get_post_terms не работает должным образом

У меня есть пользовательский тип сообщения под названием «Фрукты», и под этим я имею иерархическую таксономию под названием «Категории фруктов»,

Когда я создаю новое сообщение под Fruit, я могу назначить его «термину» – как и с обычной почтовой категорией, но под таксономией «Категории фруктов».

Я добавил три должности в Fruit, каждый из которых назначен на один термин соответственно; «Яблоки», «Груши» и «Бананы».

Все это прекрасно работает, но теперь я хочу создать страницу архива, которая просто перечисляет термины в UL для такого пользовательского типа сообщений, например;

mysite.com/fruit

  • яблоки
  • груши
  • бананы

Эта проблема, с которой я сталкиваюсь, заключается в том, что каждый запрос, который я использовал, кажется, возвращает первый термин, Яблоки. Остальные два не отображаются, и я пробовал много фрагментов кода, все с одинаковой пользой.

Некоторые вещи, которые я пробовал;

$term_list = wp_get_post_terms($post->ID, 'fruit_categories', array("fields" => "all")); print_r($term_list); 

А также

 $terms = wp_get_post_terms($post->ID,'fruit_categories'); $count = count($terms); if ( $count > 0 ){ echo "<ul>"; foreach ( $terms as $term ) { echo '<li><a href="'.get_term_link($term->slug, 'fruit_categories').'">'. $term->name . "</a></li>"; } echo "</ul>"; } 

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

https://stackoverflow.com/questions/15502811/display-current-post-custom-taxonomy-in-wordpress

Это новая установка без плагинов.

Нужно ли добавлять цикл foreach для добавления дополнительных условий? Или здесь что-то мне не хватает?

Я также смотрел wp_get_object_terms, но я действительно не понимаю, как его использовать.

Когда я делаю дамп экрана, я получаю следующее на mysite / fruit

яблоки

Массив ([0] => stdClass Object ([term_id] => 43 [name] => Яблоки [slug] => Яблоки [term_group] => 0 [term_taxonomy_id] => 43 [таксономия] => fruit_categories [description] = > [parent] => 0 [count] => 2))

Для чего это стоит, вот мой пользовательский тип сообщения и код таксономии. Http://pastebin.com/K8kwuzqt

Любая помощь очень ценится.

Solutions Collecting From Web of "get_post_terms не работает должным образом"

Я неправильно понял, что вы пытались сделать раньше. Я думал, что вы хотите перечислить термины, связанные с одним конкретным сообщением – тем, на котором вы находитесь. Упс!

Попробуйте это вместо этого:

  $terms = get_terms('fruit_category'); if(!empty($terms)){ echo "<ul>"; foreach ( $terms as $term ) { echo '<li><a href="'.get_term_link($term->slug, 'fruit_categories').'">'. $term->name . "</a></li>"; } echo "</ul>"; } 

Это даст вам список всех ссылок на страницы term , если каждый термин имеет хотя бы одну запись в нем.

Обновить:

Чтобы получить таксономические условия немного более динамично, можете сделать это:

 // taxonomy term archives $post_type = get_post_type(); $taxonomies = get_object_taxonomies($post_type); if(!empty($taxonomies)){ foreach($taxonomies as $taxonomy){ $terms = get_terms($taxonomy); if(!empty($terms)){ echo "<ul>"; foreach ( $terms as $term ) { echo '<li><a href="'.get_term_link($term->slug, $taxonomy).'">'. $term->name . "</a></li>"; } echo "</ul>"; } } }