WordPress, obtenga el nivel actual de taxonomía en una página de archivo

1 minuto de lectura

avatar de usuario
kamontander

Estoy creando un sitio de WordPress para mostrar un catálogo de artículos utilizando un tipo de publicación personalizada y una taxonomía jerárquica personalizada. Me gustaría mantenerlo simple y tratar con los elementos en una sola página de archivo, pero necesito ayuda para determinar el nivel de taxonomía que se muestra actualmente. Básicamente, necesito la siguiente funcionalidad:

if ($current_term_level = 0) {
    // show first drop-down
} else if ($current_term_level = 1) {
    // show second drop-down
} else {
    // show third drop-down
}

¿Puede alguien explicar cómo obtener $current_term_level para generar valores apropiados?

avatar de usuario
Guillermo Oda

Prueba con get_ancestors() Función WP:

function get_tax_level($id, $tax){
    $ancestors = get_ancestors($id, $tax);
    return count($ancestors)+1;
}

$current_term_level = get_tax_level(get_queried_object()->term_id, get_queried_object()->taxonomy);

if ($current_term_level = 0) {
    // show first drop-down
} else if ($current_term_level = 1) {
    // show second drop-down
} else {
    // show third drop-down
}

He logrado que funcione así:

$current_term = get_queried_object()->slug;
$tax_name="items";
$terms = get_terms( $tax_name );
foreach($terms as $term) {
    $parent = get_term($term->parent, $tax_name);
    $grandparent = get_term($parent->parent, $tax_name);
    $great_grandparent = get_term($grandparent->parent, $tax_name);
    if ($term->slug == $current_term) {
        if ($term->parent == 0) {
            echo 'top level';
        } else if ($parent->parent == 0) {
            echo 'second level';
        } else if ($grandparent->parent == 0) {
            echo 'third level';
        } else if ($great_grandparent->parent == 0) {
            echo 'fourth level';
        }
    }
}

No es la solución más limpia, lo sé. Funciona bien, ya que tengo un número finito de subniveles de taxonomía, pero sería bueno verlo respondido usando recursividad. Tal vez alguien encuentre esto útil, no obstante.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad