Детальний опис умовних тегів в WordPress

За допомогою умовних тегів ви можете контролювати те, який контент відображати на сторінці сайту на WordPress. Існує маса готових умовних тегів, які впливають на різні області вашого сайту, наприклад, головну сторінку, записи в блозі або певну категорію. Це дозволяє точніше керувати відображенням потрібного контенту вашого сайту.

В одній з попередніх статей ми вже писали коротко про умовні теги WordPress. А в сьогоднішній статті ми розглянемо це питання більш детально.

 

 

Як працюють умовні теги в WordPress

Умовні теги – це логічний тип даних, який повертає тільки true (істина) або false (хиба). Тег is_home(), наприклад, відноситься до індексної сторінки блогу (яка вказана в Майстерні в Налаштування > Читання як «Сторінка з публікаціями» при виборі Статична сторінка, або ж при виборі Останні публікації). За допомогою цього тегу ви можете показувати певний блок тексту, який не буде показуватись в інших місцях.

Приклад використання умовного тегу досить простий. Все, що ми робимо, це перевіряємо, чи являється показувана сторінка індексною сторінкою блогу. Якщо це вірно, тоді ми показуємо наш блок:

<?php  if ( is_home() ) {   echo "Ласкаво просимо на наш блог!";  }  ?>  

 

Вище ми просто перевірили тип відображуваної сторінки. Залежно від того, чи є результат істинним або хибним, виконується певний фрагмент коду.

 

 

Найбільш часто використовувані умовні теги WordPress

Нижче представлений список найпопулярніших умовних тегів:

  • is_archive() – перевіряє, чи відображається будь-який тип архівної сторінки, включаючи записи по категоріям, тегам, за датою і по автору.
  • is_attachment() – перевіряє, чи відображається вкладення. Вкладення – це картинка або інший файл, який був завантажений за допомогою утиліти завантаження при редагуванні посту.
  • is_author() – перевіряє, чи відображається сторінка записів певного автора.
  • is_category() – перевіряє, чи відображається сторінка категорії (записи з певної категорії).
  • is_front_page() – перевіряє, чи відображається головна сторінка сайту. Це працює незалежно від налаштувань для головної сторінки (відображення постів або статична сторінка).
  • is_home() – перевіряє, чи відображається індексна сторінка блогу. Це може бути (або не бути) головною сторінкою вашого сайту (залежить від налаштувань, що розглянуто вище).
  • is_page() – перевіряє, чи відображається статична сторінка.
  • is_search() – перевіряє, чи відображається сторінка результатів пошуку.
  • is_single() – перевіряє, чи відображається будь-який тип посту (крім вкладень і сторінок).
  • is_singular() – перевіряє, чи відображається окремий пост, вкладення або сторінка (набір трьох умов: is_single(), is_page() або is_attachment()). Значення true повертається, якщо виконується будь-яка з цих умов.
  • is_sticky() – перевіряє, чи був пост визначений як прикріплений (коли був поставлений прапорець «Прикріпити цей пост на першій сторінці»).
  • is_tag() – перевіряє, чи відображається сторінка архіву тегів (записи з певним тегом).

 



 

Якщо який-небудь з наступних умовних тегів повертає true, is_archive() також буде повертати true:

  • is_date() – перевіряє, чи є це сторінка записів на основі дати.
  • is_day() – перевіряє, чи є сторінка архівом записів на основі дня.
  • is_month() – перевіряє, чи є сторінка архівом записів на основі місяці.
  • is_new_day() – перевіряє, чи є сьогодні новим днем. Якщо поточний запис був опублікований в інший день в порівнянні з попередньою опублікованим записом, тег поверне true. Значення false буде повернуто, якщо обидві записи були опубліковані в один і той же день.
  • is_time() – перевіряє, чи є сторінка архівом записів на основі часу.
  • is_year() – перевіряє, чи є це сторінка записів на основі року.

 

 

 

Практичні приклади використання умовних тегів

Більшість умовних тегів дозволяють передавати параметри в функцію. Це дає вам набагато більший контроль над тим, які умови повинні бути виконані, перш ніж щось робити. Умова is_page() є хорошим прикладом цього. Вона дозволяє перевірити, чи є відображувана сторінка статичною сторінкою. Умова поверне значення true, якщо відображається будь-яка сторінка, однак, якщо вам потрібно перевірити конкретну сторінку, тоді вам потрібно вказати параметр $page. В якості цього параметра може виступати ідентифікатор сторінки, заголовок сторінки або слаг сторінки (посилання).

 

Давайте розглянемо практичний приклад. Припустимо, на вашому сайті є сторінка «Про компанію», і ви хочете налаштувати її інакше, ніж всі інші сторінки. Наприклад, ви хочете додати певний блок інформації в сайдбар (бічну панель) або ж в іншому місці.

Для однозначної ідентифікації цієї сторінки вам потрібно визначити параметр $page. Якби у цієї сторінки був ID 2510, тоді б ви використовували наступний умовний вираз:

if ( is_page( 2510 ) ) {...}  

 

Також ви можете визначити сторінку за її заголовком:

if ( is_page( 'Про компанію' ) ) {...}  

 

По-третє, ви можете використовувати слаг сторінки. Слаг сторінки в WordPress – це унікальний ідентифікатор в кінці URL (після домену). Якщо URL-адреса вашої сторінки була б VASH-DOMEN.com/pro-companiyu/, тоді слаг сторінки буде pro-companiyu:

if ( is_page( 'pro-companiyu' ) ) {...}  

 

Деякі умовні теги, такі як is_page(), також можуть передавати параметри через масив. Наступна умовна конструкція поверне значення true, якщо будь-яка з умов буде виконана:

if ( is_page( array( 2510, 'Про компанію', 'pro-companiyu' ) ) ) {...}  

 

Використання масиву дозволяє встановлювати більш однієї умови, що дуже часто буває корисним. Також іноді потрібна більш точна і докладна умова. У таких випадках досить часто використовуються логічні оператори PHP ТА (&&) і АБО (||).

Наприклад, оператор ТА (&&) використовується, коли ви хочете, щоб дві чи більше умов були виконані, перш ніж щось зробити. Наприклад, в наступному прикладі ми перевіряємо, чи є сторінка сторінкою архівних записів і чи відноситься вона до категорії Спорт. На цих сторінках буде відображатися інформаційний текст. А на сторінках інших категорій він не буде показуватись:

<?php  if ( is_archive() && is_category( 'Спорт' ) ) {   echo "Ви читаєте архівні записи в категорії: Спорт";  }  ?>  

 

 

Якщо потрібно, щоб виконувалася хоча б одна з двох умов, тоді використовуйте логічний оператор АБО (||).

Оператори ТА і АБО можуть бути об’єднані. Нижче приклад використання такої конструкції:

if ( is_single() && ( comments_open() || get_comments_number() ) ) {   echo 'Коментарі посту';  }  

 

В даному прикладі ми перевіряємо, що це сторінка одному посту, а також те, що коментарі дозволені і у посту є коментар(і).

Як ви можете бачити, функції comments_open() і get_comments_number() розглядаються як одна сутність завдяки оператору АБО (||). Ось чому вони укладені в дужки.

 

Інший логічний оператор PHP, який ви можете використовувати, — це оператор НЕ (!). Наприклад, вам потрібно показувати певний блок на всіх сторінках сайту, крім сторінок архівних записів. Вам не потрібно писати довгу умову і перевіряти: «це головна сторінка, це окремий пост, це статична сторінка…». Більш практично буде просто перевірити: «Це не сторінка архіву?».

Для цього просто додайте знак оклику перед умовним тегом. Код нижче показує, наскільки це просто на практиці. Він буде відображати інформаційний блок на кожній сторінці вашого сайту, за винятком сторінок архівних записів.

<?php  if ( !is_archive() ) {   echo 'Інформаційний блок';  }  ?>  

 

 

До цих пір ми розглядали основні приклади використання умовних тегів, коли щось або виконується, або не виконується (тобто, якщо A істинно, тоді робимо Б). На практиці зазвичай потрібно виконати деякі інші дії, якщо умова не виконується. Крім того, таких умов може бути кілька, щоб охопити всі можливі ситуації.

Замість того, щоб писати безліч окремих умов для цього, доцільно використовувати оператори else і elseif. Це дозволяє краще контролювати те, що відображається на вашому сайті.

Припустимо, вам потрібно відображати різні блоки в декількох різних областях вашого сайту. Як би це правильно зробити? Відповідь проста: використовувати оператори else і elseif. Нижче приклад такого коду:

<?php  if ( is_home() || is_front_page() ) {   echo 'Інформаційний блок №1';  } elseif ( is_category() ) {   echo 'Інформаційний блок №2';  } elseif ( is_single() ) {   echo 'Інформаційний блок №3';  } elseif ( is_page() ) {   echo 'Інформаційний блок №4';  }  else {   echo 'Інформаційний блок №5';  }  ?>  

 

Залежно від того, яку частину сайту переглядає відвідувач, йому буде показуватися один з п’яти різних блоків. Це найпростіший приклад того, як можна легко використовувати оператори else і elseif для керування різними областями вашого сайту. Звісно, ви можете використовувати і набагато більш складні блоки.

 

 

Інші важливі умовні теги в WordPress

Крім розглянутих вище тегів, є ще інші, які часто використовуються розробниками сайтів при редагуванні тем і плагінів. Ось список деяких з них:

  • comments_open() – перевіряє, чи дозволені коментарі для поточного посту або сторінки.
  • current_theme_supports( $feature ) – перевіряє, чи підтримує тема певну функцію, таку як формати записів або обрані зображення.
  • has_excerpt() – перевіряє, чи має поточний пост витримку (вступний текст).
  • has_nav_menu() – перевіряє, чи зареєстрована область для певного меню. Це використовується розробниками теми, щоб показати щось в тому випадку, якщо користувач не додав меню.
  • has_term() – перевіряє, чи має поточний пост одне із зазначених умов (term_ids, names і slugs).
  • is_404() – перевіряє, чи відображається сторінка з помилкою сервера 404.
  • is_active_sidebar( $index ) – перевіряє, чи використовується дана бічна панель (сайдбар).
  • is_admin() – перевіряє, чи відображається область адміністратора – Майстерня. Умова не перевіряє наявність у користувача прав адміністратора, для цього використовуйте тег current_user_can().
  • is_child_theme() – перевіряє, чи використовується дочірня тема.
  • is_feed() – перевіряє, чи є поточний запит фідом (наприклад, RSS).
  • is_main_site() – перевіряє, чи є сайт основним в мережі Мультисайт.
  • is_multisite() – перевіряє, чи підтримується Мультисайт.
  • is_page_template() – перевіряє, чи використовує дана сторінка шаблон для сторінки. Можна використовувати для визначення конкретного шаблону сторінки.
  • is_paged() – перевіряє, чи є сторінка, яку ви переглядаєте в даний момент, сторінкою з розбивкою на сторінки, за винятком першої сторінки в пагінації.
  • is_plugin_active( $plugin ) – перевіряє, чи активований плагін (тег доступний лише з адміністративних сторінок).
  • is_post_type_archive() – перевіряє, чи відображається сторінка архіву певного типу.
  • is_post_type_hierarchical( $post_type ) – перевіряє, чи є тип запису ієрархічним.
  • is_super_admin() – перевіряє, чи є користувач супер-адміністратором в мережі (Мультисайт).
  • is_tax() – перевіряє, чи відображається архівна сторінка користувальницької таксономії. Таксономія – це принцип розташування записів, тобто, те, що пов’язує їх. Рубрика – це один з прикладів таксономії.
  • pings_open() – перевіряє, чи дозволений пінг для поточного посту або сторінки.
  • post_type_exists() – перевіряє, чи існує вказаний тип запису.
  • taxonomy_exists() – перевіряє, чи існує вказана назва таксономії.

 

 

 

Умовні теги є важливою концепцією в WordPress. Вони використовуються практично в кожній темі WordPress. Якщо ви розберетеся в них, а також будете використовувати логічні оператори (ТА, АБО і НЕ), конструкції else, elseif, — ви зможете вирішити практично будь-яке завдання на своєму сайті.

Сподіваємося, що сьогоднішня стаття дуже допомогла вам розібратися по темі використання умовних тегів в сайті на WordPress!