Как использовать функцию is_page() в WordPress: руководство с примерами

Проверка статической страницы с помощью функции is_page()

Что такое is_page()?

Функция is_page() в WordPress используется для проверки, является ли текущая страница статической страницей (статичным контентом, в отличие от записей блога). Вы можете указать ID, название или заголовок страницы, чтобы проверить конкретную страницу. Эта функция определяется как условный тег.

Параметры функции

Если вы передаете параметр $page, функция дополнительно проверяет, если текущий запрос относится к одной из заданных страниц.

Обратите внимание:

Эта функция будет возвращать true, если вы передаете значение null, '' (пустую строку), 0, '0', false или пустой массив.

Ограничения

Функцию is_page() нельзя использовать внутри цикла WordPress (Loop), потому что некоторые глобальные переменные могут изменяться в цикле. Чтобы использовать этот тег после цикла, необходимо сбросить текущий запрос с помощью функции wp_reset_query().

Возвращаемое значение

Функция возвращает true или false:

  • true — если отображается статическая страница.
  • false — если отображается другой тип записи.

Применение

Основная структура использования функции is_page() выглядит так:

if( is_page( $page ) ){
    // ваш код
}

Параметр $page

  • Может быть ID страницы, заголовком, слагом или массивом таких значений.
  • Вы также можете указать полный путь для вложенных страниц, например: родительская-страница/дочерняя-страница/.

По умолчанию $page равен '', что соответствует любой странице.

Примеры использования

Пример 1: Проверка на дочернюю страницу

Поскольку в WordPress нет функции is_subpage(), ее можно создать следующим образом:

global $post; // Если вы находитесь вне цикла

if ( is_page() && $post->post_parent ) {
    // Это дочерняя страница
} else {
    // Это не дочерняя страница
}

Пример 2: Создание функции is_subpage()

Вы можете добавить следующий код в файл functions.php вашей темы, чтобы создать собственную функцию is_subpage():

/*
 * Проверка является ли текущая статическая страница дочерней
 * @return true/false
 */
function is_subpage() {
    global $post;

    if ( is_page() && $post->post_parent ) {
        return $post->post_parent;
    } 
    return false;
}

Пример 3: Проверка на страницу "О нас" или ее дочерние страницы

Этот пример полезен, если вы хотите задать переменную для всей ветви страниц. Например, можно задать изображение для всех страниц под веткой "О нас":

if ( is_page('о нас') || '2' == $post->post_parent ) {    
    $bannerimg = 'about.jpg';
} elseif ( is_page('обучение') || '56' == $post->post_parent ) {    
    $bannerimg = 'teaching.jpg';
} elseif ( is_page('прием') || '15' == $post->post_parent ) { 
    $bannerimg = 'admissions.jpg';
} else { 
    $bannerimg = 'home.jpg'; // изображение по умолчанию
}

Пример 4: Проверка всех уровней вложенности

Создайте функцию, которая проверяет все уровни вложенности. Например, если у вас есть страница "О нас" с дочерней страницей "Наши услуги", и у этой страницы есть еще дочерние страницы "Ремонт" и "Отделка":

/*
 * Проверка дочерних страниц на всех уровнях вложенности
 * @param (int) $pid - ID страницы, для проверки всех дочерних страниц
 */
function is_tree( $pid ) {
    global $post;

    // Если мы уже на указанной странице
    if( is_page( $pid ) )
        return true;

    $anc = get_post_ancestors( $post->ID );
    foreach( $anc as $ancestor ) {
        if( is_page() && $ancestor == $pid ) {
            return true;
        }
    }

    return false;
}

Заключение

Функция is_page() в WordPress является простым и мощным инструментом для проверки страниц. Она позволяет легко разрабатывать темы и формировать контент в зависимости от того, на какой странице находится пользователь. Помните, что для использования этой функции необходимо правильно задать параметры и быть внимательными к контексту, в котором вы ее используете.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *