es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

WordPress – obtener todos los términos con el mismo nombre

Buenos días.

Vamos a suponer que mi taxonomía de “categoría” incluye varios términos con el mismo nombre.
Por ejemplo:

Cocina
Muebles > Cocina
Herramientas > Cocina

Necesito una forma de obtener el término exacto para asociarlo programáticamente a mis publicaciones.

Añado que mi cliente requiere que la publicación solo se asocie al nivel más profundo de la estructura de categorías (“cocina”, en mi ejemplo).

Imaginemos que este es el caso: necesito recuperar datos para Herramientas > Cocina.

Esta es mi idea (y mi problema):

$found = get_term_by('name', 'Cocina', 'category');

Esperaba obtener un array de todos los términos “Cocina” para poder filtrarlo por padre.
Pero solo recibo el primer término, porque fue el primero creado en la base de datos.

¿Hay alguna solución?

¿Debo obtener todos los hijos del padre con get_term_children() y luego buscar el correcto?

Gracias a todos.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Hola,

    Sí, puedes utilizar get_term_children() para recuperar todos los términos hijos de un término padre específico. Luego puedes buscar el término correcto comparando los nombres de los términos hijos con el nombre de término que deseas asociar con la publicación.

    Aquí tienes un ejemplo de fragmento de código que puede ayudarte en este escenario:

    $parent_term = get_term_by('name', 'Herramientas', 'categoría'); // obtener el término padre
    $children_terms = get_term_children($parent_term->term_id, 'categoría'); // obtener todos los términos hijos del padre
    $found = null;
    foreach($children_terms as $term_id) {
        $term = get_term($term_id, 'categoría');
        if($term->name === 'Cocina') { // verificar si el nombre del término coincide
            $found = $term;
            break;
        }
    }
    // $found ahora debería contener el término correcto si se encontró
    

    Espero que esto te ayude. Hazme saber si tienes alguna otra pregunta.

Comments are closed.