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 ); }