¿Cómo obtener el nombre de un término de taxonomía por el slug?

5 may 2011, 07:47:46
Vistas: 147K
Votos: 42

Si conozco el slug de un término de taxonomía, ¿cómo puedo obtener el nombre de ese término?

1
Comentarios

¿quieres crear un enlace, título, ???

xLRDxREVENGEx xLRDxREVENGEx
5 may 2011 08:10:50
Todas las respuestas a la pregunta 3
4
67

La función que estás buscando es get_term_by. La usarías de la siguiente manera:

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

Esto resulta en que $term sea un objeto que contiene lo siguiente:

term_id
name
slug
term_group
term_taxonomy_id
taxonomy
description
parent
count

El codex hace un gran trabajo explicando esta función: https://developer.wordpress.org/reference/functions/get_term_by/

5 may 2011 08:11:15
Comentarios

Me ganaste de mano. Esto es exactamente lo que yo haría también.

xLRDxREVENGEx xLRDxREVENGEx
5 may 2011 08:16:04

¿Qué pasa si no tienes el slug de la taxonomía?

EkoJR EkoJR
7 may 2017 04:42:44

Puedes usar get_term( $term_id ); si solo tienes el ID.

Gavin Gavin
11 jul 2020 12:32:24

Tenga en cuenta que esto no es cómo se obtiene el nombre de la taxonomía, esto es cómo se obtiene el nombre del término.

jave.web jave.web
2 may 2021 21:00:30
0

Esto proporciona una respuesta cuando la taxonomía no está disponible/desconocida.

En mi caso, al usar get_term_by, había algunas instancias donde solo existía el Slug del Término (sin ID de Término o Taxonomía). Lo cual me trajo aquí. Sin embargo, la respuesta proporcionada no resolvió completamente mi problema.

Solución para $taxonomy vacío

// Queremos encontrar el ID para este slug.
$term_slug = 'foo-bar';
$taxonomies = get_taxonomies();
foreach ( $taxonomies as $tax_type_key => $taxonomy ) {
    // Si se devuelve un objeto de término, salir del bucle. (Devuelve false si no hay objeto)
    if ( $term_object = get_term_by( 'slug', $term_slug , $taxonomy ) ) {
        break;
    }
}
$term_id = $term_object->name;

echo 'El ID del Término es: ' . $term_id . '<br>';
var_dump( $term_object );

Resultado

El ID del Término es: 32
object(WP_Term)
  public 'term_id' => int 32
  public 'name' => string 'Ejemplo de Término'
  public 'slug' => string 'ejemplo-termino'
  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'

Como se muestra, el concepto obtiene un array de $taxonomies, recorre el array, y SI get_term_by() devuelve una coincidencia, inmediatamente sale del bucle foreach.

Nota: Intenté buscar un método para obtener la taxonomía asociada (ID o Slug) a partir del Slug del Término, pero desafortunadamente no encontré nada disponible en WordPress.

7 may 2017 06:53:29
1

gracias, esto funcionó para mí.

Creé una función y la uso una y otra vez según sea necesario.

function helper_get_taxonomy__by_slug($term_slug){
    $term_object = "";
    $taxonomies = get_taxonomies();
    foreach ($taxonomies as $tax_type_key => $taxonomy) {
        // Si se devuelve el objeto del término, romper el bucle. (Devuelve falso si no hay objeto);
        if ($term_object = get_term_by('slug', $term_slug, $taxonomy)) {
            break;
        }else{
            $term_object = "¡Advertencia! Taxonomía del helper no encontrada.";
        }
    }
    return $term_object;
}
3 ene 2019 17:09:55
Comentarios

Debes retornar los mismos tipos que get_term_by: (WP_Term|array|false) Instancia de WP_Term (o array) en caso de éxito. Retornará false si $taxonomy no existe o $term no fue encontrado.

xnagyg xnagyg
25 may 2020 20:58:26