Получить родительский заголовок страницы верхнего уровня


Как мне получить заголовок страницы самой верхней родительской страницы страницы, на которой в данный момент находится посетитель?

Позвольте мне описать:

У меня есть такая структура страницы:

  • Пример Заголовка 1
    • Пример Заголовка 1-1
      • Пример Заголовка 1-1-1
      • Пример Заголовка 1-1-2
    • Пример Названия 1-2
  • Пример Заголовка 2
  • Пример Заголовка 3
  • Пример названия 4

Вот что я хочу вернуть:

  • Пользователь включен Example Title 1 возврат Example Title 1
  • Пользователь включен Example Title 1-1 возврат Example Title 1
  • Пользователь включен Example Title 1-1-1 возврат Example Title 1
  • Пользователь находится на Example Title 2 возврат Example Title 2

Обычно я бы проверил $post->parent, и если 0, то верните заголовок страницы, иначе верните заголовок страницы выше. Проблема в том, что $post->родитель вернется только на один уровень. Мне нужно использовать какую-то рекурсивную функцию, которая продолжает возвращаться до тех пор, пока $post->parent == 0.

Теперь я могу справиться с этим сам, но единственный способ, которым я мог бы это сделать, - использовать get_post() каждый раз, но представьте, что я нахожусь на глубине 8 слоев (нам нужно идти глубже). Это потребовало бы загрузки 8 страниц, чтобы, наконец, перейти на верхний уровень. У кого-нибудь есть лучший способ сделать это?

Author: Scott, 2011-10-25

2 answers

Нашел этот способ:

if ( 0 == $post->post_parent ) {
    the_title();
} else {
    $parents = get_post_ancestors( $post->ID );
    echo apply_filters( "the_title", get_the_title( end ( $parents ) ) );
}

У кого есть лучший способ, пожалуйста, ответьте.

 13
Author: Scott, 2011-10-25 17:55:01

Не уверен, что это эффективно, это можно сделать с помощью recursive function

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);
    }
}
 4
Author: Sisir, 2013-12-06 07:23:30