Получить родительский заголовок страницы верхнего уровня
Как мне получить заголовок страницы самой верхней родительской страницы страницы, на которой в данный момент находится посетитель?
Позвольте мне описать:
У меня есть такая структура страницы:
- Пример Заголовка 1
- Пример Заголовка 1-1
- Пример Заголовка 1-1-1
- Пример Заголовка 1-1-2
- Пример Названия 1-2
- Пример Заголовка 1-1
- Пример Заголовка 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 страниц, чтобы, наконец, перейти на верхний уровень. У кого-нибудь есть лучший способ сделать это?
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 ) ) );
}
У кого есть лучший способ, пожалуйста, ответьте.
Не уверен, что это эффективно, это можно сделать с помощью 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);
}
}