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 1returneazăTitlu Exemplu 1 - Dacă utilizatorul este pe
Titlu Exemplu 1-1returneazăTitlu Exemplu 1 - Dacă utilizatorul este pe
Titlu Exemplu 1-1-1returneazăTitlu Exemplu 1 - Dacă utilizatorul este pe
Titlu Exemplu 2returnează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ă.
Chip Bennett
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/
TCB13