Ottenere il titolo della pagina genitore di livello superiore
Come posso ottenere il titolo della pagina genitore di livello più alto della pagina che il visitatore sta attualmente visualizzando?
Lasciami descrivere:
Ho questa struttura di pagine:
- Titolo Esempio 1
- Titolo Esempio 1-1
- Titolo Esempio 1-1-1
- Titolo Esempio 1-1-2
- Titolo Esempio 1-2
- Titolo Esempio 1-1
- Titolo Esempio 2
- Titolo Esempio 3
- Titolo Esempio 4
Ecco cosa voglio ottenere:
- L'utente è su
Titolo Esempio 1
restituisceTitolo Esempio 1
- L'utente è su
Titolo Esempio 1-1
restituisceTitolo Esempio 1
- L'utente è su
Titolo Esempio 1-1-1
restituisceTitolo Esempio 1
- L'utente è su
Titolo Esempio 2
restituisceTitolo Esempio 2
Normalmente quello che farei è controllare $post->parent
e se è 0
allora restituire il titolo della pagina altrimenti restituire il titolo della pagina superiore. Il problema è che $post->parent torna indietro solo di un livello. Ho bisogno di usare una sorta di funzione ricorsiva che continua a tornare indietro finché $post->parent == 0
.
Ora posso gestirlo da solo ma l'unico modo a cui ho pensato per farlo sarebbe usare get_post() ogni volta ma immagina di essere a 8 livelli di profondità (dobbiamo andare più a fondo). Ciò comporterebbe il caricamento di 8 pagine per arrivare finalmente al livello superiore. Qualcuno ha un modo migliore per farlo?

Probabilmente è la soluzione migliore. Un altro modo sarebbe quello di scorrere iterativamente attraverso get_page( array( 'post_parent' => $post->post_parent ) )
fino a raggiungere la cima della gerarchia. Il tuo approccio sarebbe chiaramente più efficiente.

Non sono sicuro che sia il modo più efficiente, ma può essere fatto tramite una funzione ricorsiva
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);
}
}

Meglio così: https://css-tricks.com/snippets/wordpress/find-id-of-top-most-parent-page/
