+7 (925) 061-34-11
map
Офис: 143988, Московская область, Балашиха, микрорайон Павлино, 1Б

Hello world!

Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

Такую функцию полезно создавать, когда на сайте предполагается делать проверки как в примере 1, один или более раз.

Пример 3

Чтобы определить страницу «О сайте» или её дочернюю страницу, используйте этот пример. Этот пример может пригодится, когда нужно указать переменную для всей ветки страниц. Здесь мы укажем картинку для ветки:

if ( is_page( 'about' ) || '2' == $post->post_parent ) {    
	// Это страница "О сайте" или её дочерняя страница
	$bannerimg = 'about.jpg';

}
elseif ( is_page( 'learning' ) || '56' == $post->post_parent ) {    
	$bannerimg = 'teaching.jpg';

}
elseif ( is_page( 'admissions' ) || '15' == $post->post_parent ) { 
	$bannerimg = 'admissions.jpg';

}
else { 
	$bannerimg = 'home.jpg'; // если мы на неопределенной странице, выведем картинку по умолчанию
}

Пример 4

Создадим функцию, которая проверит все уровни вложенности, всю ветку подстраниц и если мы на одной из страниц ветки, то функция вернет true, в противном случае false. Т.е. предположим у нас есть страница «О нас» у нее есть дочерняя страница «Наши услуги», а у этой страницы есть еще дочерние страницы «Покраска» и «Отделка». В эту функцию передадим ID страницы «О нас» и она будет возвращать true если мы находимся на любой из указанных страниц:

/*
 * Проврека дочерних страниц по всем уровням вложености
 * $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;
}

Заметки

Возвращает true при передаче пустых значений

Будьте внимательны, потому что следующие вызовы этой функции вернут true:

is_page( '' )
is_page( 0 )
is_page( '0' )
is_page( null )
is_page( false )
is_page( array() )

Нельзя использовать внутри Цикла WordPress

Из-за того что в при работе цикла переписываются некоторые глобальные переменные,is_page() не получится использовать внутри цикла. Впрочем, в этом нет необходимости. Чтобы использовать этот Тег шаблона после цикла, цикл надо сбросить функцией:wp_reset_query()

Код is_page() /wp-includes/query.php WP 4.4.2

function is_page( $page = '' ) {
	global $wp_query;

	if ( ! isset( $wp_query ) ) {
		_doing_it_wrong( __FUNCTION__, __( 'Conditional query tags do not work before the query is run. Before then, they always return false.' ), '3.1' );
		return false;
	}

	return $wp_query->is_page( $page );
}

Оставить заявку онлайн