Obține titlul paginii părinte de nivel superior
Cum pot obține titlul paginii părinte de nivel suprem a paginii pe care se află vizitatorul în prezent?
Permiteți-mi să explic:
Am această structură de pagini:
- Titlu Exemplu 1
- Titlu Exemplu 1-1
- Titlu Exemplu 1-1-1
- Titlu Exemplu 1-1-2
- Titlu Exemplu 1-2
- Titlu Exemplu 1-1
- Titlu Exemplu 2
- Titlu Exemplu 3
- Titlu Exemplu 4
Iată ce doresc să returnez:
- Dacă utilizatorul este pe
Titlu Exemplu 1
returneazăTitlu Exemplu 1
- Dacă utilizatorul este pe
Titlu Exemplu 1-1
returneazăTitlu Exemplu 1
- Dacă utilizatorul este pe
Titlu Exemplu 1-1-1
returneazăTitlu Exemplu 1
- Dacă utilizatorul este pe
Titlu Exemplu 2
returneazăTitlu Exemplu 2
În mod normal, aș verifica $post->parent
și dacă este 0
atunci aș returna titlul paginii, altfel aș returna titlul paginii de deasupra. Problema este că $post->parent merge doar cu un nivel înapoi. Am nevoie de o funcție recursivă care continuă să meargă înapoi până când $post->parent == 0
.
Pot să rezolv asta singur, dar singura metodă la care mă pot gândi ar fi să folosesc get_post() de fiecare dată, dar imaginați-vă că sunt la 8 niveluri adâncime (trebuie să mergem și mai departe). Asta ar implica încărcarea a 8 pagini pentru a ajunge la nivelul superior. Are cineva o metodă mai bună de a face asta?
Probabil că este la fel de bun ca oricare altul. Un alt mod ar fi să parcurgi iterativ prin get_page( array( 'post_parent' => $post->post_parent ) )
până ajungi în vârful ierarhiei. Abordarea ta ar fi clar mai eficientă.

Nu sunt sigur dacă este eficient, dar acest lucru poate fi realizat prin funcție recursivă
function get_post_ancestor_title($post_id){
$post = get_post($post_id)->post_parent;
if ( 0 == $post->post_parent ) {
return get_the_title();
} else {
get_post_ancestor_title($post->ID);
}
}

Mai bine așa: https://css-tricks.com/snippets/wordpress/find-id-of-top-most-parent-page/
