Navegación de Migas de Pan para Taxonomías Personalizadas
Soy completamente nuevo en los tipos de contenido personalizados y taxonomías personalizadas, así que tengan paciencia. Estoy tratando de crear una navegación de migas de pan para la taxonomía personalizada project-category
dentro del tipo de contenido personalizado projects
. Básicamente, necesito que funcione así:
Tipo de Contenido Personalizado > Nivel 1 de Taxonomía > Nivel 2 de Taxonomía > Nivel 3 de Taxonomía > etc.
Cada encabezado debe enlazarse a la página correspondiente. Tengo esto más o menos funcionando, pero no es muy dinámico y solo enlaza tres niveles de navegación. Aquí está mi código actual:
<ul>
<li><a href="/projects">Projects</a></li>
<?
$term = get_term_by("slug", get_query_var("term"), get_query_var("taxonomy") );
$parent = get_term($term->parent, get_query_var("taxonomy"));
if ($parent->name != "") {
echo "<li><a href=\"/project-category/" . $parent->slug . "\">" . $parent->name . "</a></li>";
}
if (is_tax("project-category")) {
$term = get_term_by("slug", get_query_var("term"), get_query_var("taxonomy"));
$tax_term_breadcrumb_taxonomy_slug = $term->taxonomy;
echo "<li><a href=\"/project-category/" . $term->slug . "\">" . $term->name . "</a></li>";
}
?>
</ul>
Hasta el segundo nivel, esto funciona actualmente, así:
Tipo de Contenido Personalizado > Nivel 1 de Taxonomía > Nivel 2 de Taxonomía
Pero si voy a un tercer nivel, termina siendo:
Tipo de Contenido Personalizado > Nivel 2 de Taxonomía > Nivel 3 de Taxonomía
Cuanto más profundo voy, más se desajustan los niveles. Sé que el problema es que solo estoy verificando un padre, pero no puedo descubrir cómo verificar todos los padres posibles.
ACTUALIZACIÓN: Logré que funcione un poco mejor, pero está listando las cosas al revés. Aquí está mi código actualizado:
<ul>
<li><a href="<? echo home_url(); ?>/projects">Projects</a></li>
<?
$term = get_term_by("slug", get_query_var("term"), get_query_var("taxonomy") );
$parent = get_term($term->parent, get_query_var("taxonomy"));
while ($parent->term_id) {
echo "<li><a href=\"" . home_url() . "/project-category/" . $parent->slug . "\">" . $parent->name . "</a></li>";
$parent = get_term($parent->parent, get_query_var("taxonomy"));
}
echo "<li><a href=\"" . home_url() . "/project-category/" . $term->slug . "\">" . $term->name . "</a></li>";
?>
</ul>
En lugar de mostrar Tipo de Contenido Personalizado > Nivel 1 de Taxonomía > Nivel 2 de Taxonomía > Nivel 3 de Taxonomía, está mostrando Tipo de Contenido Personalizado > Nivel 2 de Taxonomía > Nivel 1 de Taxonomía > Nivel 3 de Taxonomía. Tiene que ver con el bucle while, pero no puedo revertirlo.
Gracias.

Utilizando tu método, lo he editado un poco para hacerlo más viable. Aquí está el código, debajo explicaré.
<ul>
<li><a href="<?php echo home_url(); ?>/projects">Proyectos</a></li>
<?php
$term = get_term_by("slug", get_query_var("term"), get_query_var("taxonomy") );
$tmpTerm = $term;
$tmpCrumbs = array();
while ($tmpTerm->parent > 0){
$tmpTerm = get_term($tmpTerm->parent, get_query_var("taxonomy"));
$crumb = '<li><a href="' . get_term_link($tmpTerm, get_query_var('taxonomy')) . '">' . $tmpTerm->name . '</a></li>';
array_push($tmpCrumbs, $crumb);
}
echo implode('', array_reverse($tmpCrumbs));
echo '<li><a href="' . get_term_link($tmpTerm, get_query_var('taxonomy')) . '">' . $term->name . '</a></li>';
?>
</ul>
Después de obtener el término, lo asigno a un término temporal viable para poder sobrescribirlo. SI ese término tiene un padre, entramos en el bucle y obtenemos el padre del término original, pero lo asignamos a nuestro término temporal porque necesitamos subir hasta el término más alto, así que cuando el bucle se ejecuta nuevamente, verifica si term2 tiene un padre. Almacenamos el HTML en un array porque es más fácil invertirlo y mostrarlo en PHP. Si tienes alguna pregunta sobre lo anterior, avísame, ¡espero que te funcione!
¡Ah! También deberías dejar que WordPress se encargue de obtener los enlaces de los términos por ti, es mucho más confiable si los slugs cambian.

Lo resolví unos 10 minutos antes de que @Howdy_McGee publicara, pero pude usar parte de su código para mejorar el mío. Esto es lo que terminé usando:
$term = get_term_by("slug", get_query_var("term"), get_query_var("taxonomy") );
$parent = get_term($term->parent, get_query_var("taxonomy"));
$parentItems = array();
while ($parent->term_id) {
array_push($parentItems,"<li><a href=\"" . home_url() . "/project-category/" . $parent->slug . "\">" . $parent->name . "</a></li>");
$parent = get_term($parent->parent, get_query_var("taxonomy"));
}
echo implode (array_reverse($parentItems));
echo "<li><a href=\"" . home_url() . "/project-category/" . $term->slug . "\">" . $term->name . "</a></li>";
