Як перевірити наявність батьківської сторінки у 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.

Михайло Петров
Михайло Петров

Мене звати Михайло. Я — WordPress-розробник. Створюю візитки, корпоративні сайти, інтернет-магазини, блоги на WordPress. Надаю консультації з WordPress.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *