Як перевірити наявність батьківської сторінки у WordPress
Привіт:) У цьому пості покажу, як перевірити, чи поточна сторінка WordPress має батьківську, тобто чи вона є дочірньою відносно іншої.
Навіщо це потрібно?
Інколи під час верстки шаблонів WordPress виникає потреба змінювати вигляд дочірніх сторінок або відображати додаткову інформацію про їхню структуру. Наприклад, можна:
- відображати заголовок батьківської сторінки;
- формувати навігацію (breadcrumbs);
- стилізувати дочірні сторінки по-іншому;
- обмежити доступ до дочірніх сторінок без доступу до батьківської.
Базова перевірка типу сторінки
Для перевірки, чи у даний момент ми знаходимося на Сторінці, існує умовний тег:
is_page()
Але цей тег лише вказує, що ми на сторінці, не враховуючи її ієрархію. Щоб дізнатись, чи є у неї батьківська сторінка — потрібна додаткова логіка.
Як перевірити, чи сторінка дочірня (має батьківську)
Додайте наступний код у файл functions.php:
/**
* Перевіряє, чи поточна сторінка має батьківську.
*/
if ( ! function_exists( 'mp_is_subpage' ) ) {
function mp_is_subpage() {
global $post;
if ( is_page() && $post->post_parent ) {
return $post->post_parent;
} else {
return false;
}
}
}
Як використати цю функцію в шаблоні
Використовувати цю перевірку в коді потрібного файлу-шаблону теми можна так:
<?php
if ( mp_is_subpage() ) {
echo '<h1>' . get_the_title() . ' (батьківська: ' .
get_the_title( $post->post_parent ) . ')</h1>';
} else {
echo '<h1>' . get_the_title() . '</h1>';
}
?>
mp_is_subpage() замість використання $post->post_parent, щоб уникнути проблем з кешуванням або глобальною змінною.Якщо Сторінка не має батьківської, то буде виведений звичайний заголовок. Якщо ж є, то до заголовка додасться і її назва. Буде виведено:
Заголовок поточної сторінки (батьківська: Заголовок батьківської сторінки)
до змісту ↑
Альтернативний підхід через WP_Post
Якщо ви використовуєте об’єкт WP_Post, то перевірку можна здійснити без глобальної змінної:
if ( get_post()->post_parent ) {
// є батьківська сторінка
}
Але спосіб з функцією mp_is_subpage() більш універсальний для шаблонів.
Додатково: Виведення посилання на батьківську сторінку
Щоб додати посилання на батьківську сторінку:
if ( mp_is_subpage() ) {
echo '<a href="' . get_permalink( mp_is_subpage() ) . '">' .
get_the_title( mp_is_subpage() ) . '</a>';
}
Ієрархія сторінок у WordPress — потужна функція, яку легко використовувати у своїх шаблонах. Перевірка на наявність батьківської сторінки допомагає створити зрозумілу структуру сайту, покращити UX і SEO.
