Как получить название термина таксономии по его slug?

5 мая 2011 г., 07:47:46
Просмотры: 147K
Голосов: 42

Если я знаю slug термина таксономии, как я могу получить название этого термина?

1
Комментарии

вы хотите создать ссылку, заголовок, ???

xLRDxREVENGEx xLRDxREVENGEx
5 мая 2011 г. 08:10:50
Все ответы на вопрос 3
4
67

Функция, которую вы ищете, это get_term_by. Вы можете использовать её следующим образом:

<?php $term = get_term_by('slug', 'my-term-slug', 'category'); $name = $term->name; ?>

В результате $term будет объектом, содержащим следующие свойства:

term_id
name
slug
term_group
term_taxonomy_id
taxonomy
description
parent
count

Кодекс отлично объясняет эту функцию: https://developer.wordpress.org/reference/functions/get_term_by/

5 мая 2011 г. 08:11:15
Комментарии

Ты опередил меня. Я бы сделал точно так же.

xLRDxREVENGEx xLRDxREVENGEx
5 мая 2011 г. 08:16:04

Что делать, если у вас нет слага таксономии?

EkoJR EkoJR
7 мая 2017 г. 04:42:44

Вы можете использовать get_term( $term_id );, если у вас есть только ID.

Gavin Gavin
11 июл. 2020 г. 12:32:24

Обратите внимание, что это не способ получить название таксономии, это способ получить название термина.

jave.web jave.web
2 мая 2021 г. 21:00:30
0

Этот метод предоставляет решение, когда таксономия недоступна/неизвестна.

В моём случае, при использовании get_term_by, были ситуации, когда доступен был только слаг термина (без ID термина или таксономии). Это привело меня сюда. Однако, предоставленное решение не совсем решило мою проблему.

Решение для пустой $taxonomy

// Мы хотим найти ID для этого слага.
$term_slug = 'foo-bar';
$taxonomies = get_taxonomies();
foreach ( $taxonomies as $tax_type_key => $taxonomy ) {
    // Если объект термина возвращён, выходим из цикла. (Возвращает false, если объекта нет)
    if ( $term_object = get_term_by( 'slug', $term_slug , $taxonomy ) ) {
        break;
    }
}
$term_id = $term_object->name;

echo 'ID термина: ' . $term_id . '<br>';
var_dump( $term_object );

Результат

ID термина: 32
object(WP_Term)
  public 'term_id' => int 32
  public 'name' => string 'Example Term'
  public 'slug' => string 'example-term'
  public 'term_group' => int 0
  public 'term_taxonomy_id' => int 123
  public 'taxonomy' => string 'category'
  public 'description' => string ''
  public 'parent' => int 0
  public 'count' => int 23
  public 'filter' => string 'raw'

Как видно, концепция заключается в получении массива $taxonomies, переборе этого массива, и ЕСЛИ get_term_by() возвращает совпадение, то сразу же происходит выход из цикла foreach.

Примечание: Я пытался найти метод для получения связанной таксономии (ID или слаг) по слагу термина, но, к сожалению, не нашёл ничего доступного в WordPress.

7 мая 2017 г. 06:53:29
1

спасибо, это сработало для меня.

Я создал функцию и использую её снова и снова по мере необходимости.

function helper_get_taxonomy__by_slug($term_slug){
    $term_object = "";
    $taxonomies = get_taxonomies();
    foreach ($taxonomies as $tax_type_key => $taxonomy) {
        // Если объект термина получен, прерываем цикл. (Возвращает false, если объекта нет);
        if ($term_object = get_term_by('slug', $term_slug, $taxonomy)) {
            break;
        }else{
            $term_object = "Внимание! Вспомогательная таксономия не найдена.";
        }
    }
    return $term_object;
}
3 янв. 2019 г. 17:09:55
Комментарии

Вы должны возвращать те же типы, что и get_term_by: (WP_Term|array|false) экземпляр WP_Term (или массив) при успешном выполнении. Вернет false, если $taxonomy не существует или $term не был найден.

xnagyg xnagyg
25 мая 2020 г. 20:58:26