Navigație prin filă de navigare pentru taxonomii personalizate
Sunt complet nou în tipurile de postări personalizate și taxonomiile personalizate, așa că aveți răbdare cu mine. Încerc să creez o filă de navigare pentru taxonomia personalizată project-category
în cadrul tipului de postare personalizat projects
. În esență, trebuie să funcționeze astfel:
Tip Postare Personalizată > Nivel Taxonomie 1 > Nivel Taxonomie 2 > Nivel Taxonomie 3 > etc.
Fiecare titlu trebuie să fie legat la pagina corespunzătoare. Am reușit să fac asta într-un fel, dar nu este foarte dinamic și leagă doar trei niveluri de navigare. Iată codul meu pentru asta:
<ul>
<li><a href="/projects">Proiecte</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>
Până la al doilea nivel, acest cod funcționează în prezent, astfel:
Tip Postare Personalizată > Nivel Taxonomie 1 > Nivel Taxonomie 2
Dar dacă merg la un al treilea nivel, rezultatul este:
Tip Postare Personalizată > Nivel Taxonomie 2 > Nivel Taxonomie 3
Cu cât merg mai adânc, cu atât nivelurile devin mai derutate. Știu că problema este că verific doar un părinte, dar nu pot să-mi dau seama cum să verific pentru toți părinții posibili.
ACTUALIZARE: Am reușit să-l fac să funcționeze puțin mai bine, dar listează elementele în ordine inversă. Iată codul actualizat:
<ul>
<li><a href="<? echo home_url(); ?>/projects">Proiecte</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>
În loc să listeze Tip Postare Personalizată > Nivel Taxonomie 1 > Nivel Taxonomie 2 > Nivel Taxonomie 3, listează Tip Postare Personalizată > Nivel Taxonomie 2 > Nivel Taxonomie 1 > Nivel Taxonomie 3. Este ceva legat de bucla while, dar nu reușesc să o inversez.
Mulțumesc.

Folosind metoda ta, am editat-o puțin pentru a o face mai viabilă. Iată codul, mai jos voi explica.
<ul>
<li><a href="<?php echo home_url(); ?>/projects">Proiecte</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>
După ce obții termenul, îl atribui unei variabile temporare pentru a putea suprascrie valoarea. Dacă acest termen are un părinte, intrăm în buclă și obținem părintele termenului original, dar îl atribuim termenului nostru temporar deoarece trebuie să urcăm până la termenul cel mai înalt, astfel încât când bucla se execută din nou verifică dacă termenul2 are părinte. Stocăm HTML-ul într-un array pentru că este mai ușor să-l inversăm și să-l afișăm în PHP. Dacă ai întrebări despre cele de mai sus, spune-mi, sper să funcționeze pentru tine!
A, da! De asemenea, ar trebui să lași WordPress să se ocupe de generarea linkurilor pentru termeni, este mult mai sigur dacă slug-urile se schimbă.

Am rezolvat problema cu aproximativ 10 minute înainte ca @Howdy_McGee să posteze, dar am putut folosi o parte din codul lui pentru a-mi îmbunătăți soluția. Iată ce am folosit în final:
$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>";
