is_page()
Перевіряє, чи відображається сторінка “постійної сторінки”. Можна вказати ID, ярлик або заголовок сторінки для перевірки. Умовний тег.
Дивіться також схожі функції:
Поверне 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_shop()
(дуже швидко) | 50000 разів – 0.02 сек
(швидкість світла) |
PHP 7.0.8, WP 4.6.1
Хуків немає.
Повертає
true|false
. true, якщо відображається тип сторінки: Постійна сторінка та false, якщо відображається будь-який інший тип сторінки.
Використання
if( is_page( $page ) ){
//код
}
-
$page
(рядок/число/об’єкт/масив) ID, ярлик, заголовок сторінки, яку потрібно перевірити. Можна вказати масив із будь-яких цих значень, щоб виставити на перевірку кілька різних сторінок.
За замовчуванням: ”
Приклади
#1 Функція у дії
Різні приклади використання – випадки коли функція повертає true (спрацьовує):
is_page();
// Коли відображається постійна сторінка.
is_page(42);
// коли відображається сторінка ID 42.
is_page('Про сайт');
// Коли відображається сторінка із заголовком "Про сайт".
is_page('o-saite');
// Коли відображається сторінка зі слагом "o-saite".
is_page(array(42, 'o-saite', 'Про сайт'));
//Параметри можна комбінувати. Додано у версії 2.5.
is_page(array('sample-page', 'contacts', 23, 34));
// Можна перевіряти кілька сторінок одночасно. Усі вказані сторінки різні...
#2 Примітка про кирилицю та ярлик (склад)
Якщо у вас на сайті кирилиця не змінюється на латиницю – немає плагіна Cyr-To-Lat або йому подібного, то при створенні запису її ярлик змінюється і кирилиця перетворюється на спеціальні символи (контакти – %d0%ba%d0%be%d0%bd %d1%82%d0%b0%d0%ba%d1%82%d1%8b), тому при перевірці потрібно це враховувати. Тобто. якщо перевіряється не заголовок, а ярлик (post_name), робіть так:
is_page('про сайт'); // неправильно
is_page( sanitize_title('про сайт') ); // правильно
#3 Перевірка Чи знаходимося ми на дочірній сторінці біля постійної сторінки
У WordPress немає функції is_subpage() . Але таку перевірку можна зробити таким кодом:
Приклад 1
global $post; // Якщо за межами циклу
if ( is_page() && $post->post_parent ) {
// Це дочірня сторінка
} else {
// Це не дочірня сторінка
}
Приклад 2
Ви можете створити свою функцію is_subpage() . Додайте такий код у файл теми functions.php . Вона працює як перший приклад: перевірять чи є поточна сторінка дочірньої, тобто. чи це сторінка взагалі і чи є в неї батьківська сторінка.
Таку функцію корисно створювати, коли на сайті передбачається виконувати перевірки як у прикладі 1 багато разів.
/*
* Перевірять чи є поточна постійна сторінка дочірньою сторінкою
* Повертає true або false
*/
function is_subpage() {
global $post;
if ( is_page() && $post->post_parent ) {
return $post->post_parent;
}
return false;
}
Приклад 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;
}
#4 Перевірка поділу сторінки
У записах можна використовувати шоткод <!–nextpage–> . Такий код ділитиме текст запису на кілька сторінок. Це корисно, коли потрібно вивести метадані лише на першій сторінці, розділеній на кілька сторінок запису.
Приклад 1
$paged = $wp_query->get( 'paged');
if ( ! $paged || $paged < 2 ){
// Пост не поділений на сторінки або це перша сторінка.
}
else {
// Це 2,3,4... сторінка розділеного посту.
}
Приклад 2
$paged = get_query_var('paged')? get_query_var('paged'): false;
if ( $paged === false ){
// Пост не поділений на сторінки або це перша сторінка.
}
else {
// Це 2,3,4... сторінка розділеного посту.
}
Приклад 3
if ( 0 === get_query_var( 'page' ) ) {
// Пост не поділений на сторінки або це перша сторінка.
}
else {
// Це 2,3,4... сторінка розділеного посту.
}
нотатки
- Дивіться: is_single()
- Дивіться: is_singular()
- Global. WP_Query. $wp_query WordPress Query object.
список змін
З версії 1.5.0 | Введено. |
Код is_page() is page WP 6.0.2
function is_page( $page = '' ) {
global $wp_query;
if ( ! isset( $wp_query ) ) {
_doing_it_wrong( __FUNCTION__, __( 'Conditional query tags до роботи не працює, тому що керує. Before then, they always return false.' ), '3.1.0' );
return false;
}
return $wp_query->is_page( $page );
}