Условные теги в WordPress: 27-39
29 Мая 2022г. в 04:33В этой серии уроков мы знакомимся с основными условными тегами, доступными в WordPress. В четвёртой части продолжим свой обзор.
Начнём!
27. Является ли страница, страницей архива по месяцам: is_month()
Архив по месяцам, наверное, одна из самых часто-используемых страниц в WordPress. Если нужно осуществить проверку, то можно смело использовать условный тег is_month().
Параметры
Данный тег не принимает параметров.
28. Проверка фичи в теме: current_theme_supports()
Во время разработки плагина, вам может понадобится проверить поддерживает ли тема миниатюры, форматы постов, собственные заголовки или виджеты. С помощью тега current_theme_supports() можно осуществить проверку на наличие нужной фичи.
Параметры
Данный тег принимает один параметр:
$feature (строка, не обязательный): Название фичи. (По умолчанию: не задано)
Возможные фичи:
'post-thumbnails'
'post-formats'
'custom-header'
'custom-background'
'menus'
'automatic-feed-links'
'editor-style'
'widgets'
'html5'
Пример использования current_theme_supports()
К примеру мы работаем над плагином для возможности добавления собственного фонового изображения в тему ("custom backgrounds"). Если другие темы не будут поддерживать данную фичу, то мы выведем соответствующее сообщение об ошибке:
01
<?php
02
03
add_action( 'admin_notices', 'custom_bg_feature_warning' );
04
05
function custom_bg_feature_warning() {
06
07
if ( ! current_theme_supports( 'custom-background' ) ) {
08
09
echo '<div class="error">
10
<p>' . __( 'This plugin requires a theme with the "custom backgrounds" feature enabled.', 'translation-domain' ) . '</p>
11
</div>';
12
13
}
14
15
}
16
17
?>
29. Проверка активности плагина: is_plugin_active()
Во время нахождения в панели администрирования можно воспользоваться тегом is_plugin_active(), который поможет определить активность плагина. Это может быть полезно, если вы разрабатываете вторичные плагины для уже существующих (как в случае WooCommerce) или фрэймворков, установленные как плагины (к примеру Redux Framework).
Параметры
Данный тег принимает только один параметр:
$plugin (строка, обязательна): Название плагина или под-папки. (По умолчанию: не задан)
30. Является ли URL адресом вложения: is_local_attachment()
Как определить является ли какой-то URL адресом вложения? Для этого можно использовать условный тег is_local_attachment().
Параметры
Данный тег принимает один параметр:
$url (строка, обязателен): URL для проверки. (По умолчанию: значение не задано)
Пример использования is_local_attachment()
Делаем проверку, является ли URL локальным вложением:
01
<?php
02
03
$url = some_url_generator_function();
04
05
if ( is_local_attachment( $url ) ) {
06
07
_e( 'Yep, this is a local attachment!', 'translation-domain' );
08
09
} else {
10
11
_e( 'Nope, this is not a local attachment.', 'translation-domain' );
12
13
}
14
15
?>
31. Является ли страница архивом по промежутку времени: is_time()
Знаете ли вы, что в WordPress существуют архивы, основанные на часах, минутах и даже секундах? Их можно создать благодаря классу WP_Query. Если вам нужно отследить данный факт, то можете воспользоваться условным тегом is_time().
Параметры
Данный тег не принимает параметров.
32. Проверка локали (справа-налево): is_rtl()
Во многих восточных языках чтение осуществляется справа-налево. Если ваш сайт предусматривает массовое посещение таких пользователей, то благодаря тегу is_rtl() можно проверить текущую локаль.
Параметры
Данный тег не принимает параметров.
Пример использования is_rtl()
Многие верстальщики создают отдельные таблицы стилей для страниц, где используется язык, который следует читать справа-налево:
01
<?php
02
03
add_action( 'wp_enqueue_scripts', 'mytheme_enqueue_styles' );
04
05
function mytheme_enqueue_styles() {
06
07
if ( is_rtl() ) {
08
09
wp_enqueue_style( 'style-rtl', plugins_url( '/css/style-rtl.css', __FILE__ ) );
10
11
}
12
13
}
14
15
?>
33. Является ли страница, страницей архива таксономии: is_tax()
Для проверки специфики, указанной в заголовке можно использовать is_tax(). По умолчанию используются все теги, однако в параметрах можно указать отдельные таксономии и теги.
Параметры
Данный тег принимает следующие параметры:
$taxonomy (массив/строка, не обязателен): слаг таксономии или массив слагов. (По умолчанию: не задан)
$term (массив/строка/целое число, не обязателен): ID термина, название, слаг или массив из перечисленных значений. (По умолчанию: значение не задано)
34. Является ли страница, страницей вложений: is_attachment()
Иногда может возникнуть необходимость проверки типа текущей страницы: является ли она страницей вложений. Условный тег is_attachment() вернёт TRUE если это так и FALSE если нет.
Параметры
Данный тег не принимает параметров.
Пример использования is_attachment()
К примеру вы хотите отобразить ссылку "Назад к посту" где-то возле блока вложений:
01
<?php
02
03
if ( is_attachment() ) {
04
05
// Get attachment's parent.
06
$parent = get_post_field( 'post_parent', $id );
07
08
// Get permalink of the parent post.
09
$parent_link = get_permalink( $parent );
10
11
// Echo the link.
12
echo '<a href="' . $parent_link . '" class="parent-post-link">' . __( 'Back to the post', 'translation-domain' ) . '</a>';
13
14
}
15
16
?>
35. Проверка существования термина: term_exists()
Условным тегом term_exists() можно осуществить проверку наличия термина в таксономии и получить его ID (если таксономия не задана) или массив таксономий. В случае, если термина не существует, то будет возвращён 0 или NULL.
Параметры
Данный тег принимает три параметра:
$term (строка/целое число, обязателен): Название термина или ID. (По умолчанию: не задан)
$taxonomy (строка, не обязателен): Название таксономии. (По умолчанию: Не задано)
$parent (целое число, не обязателен): ID термина-родителя. (По умолчанию: 0)
36. Проверка наличия термина у поста: has_term()
Для проверки наличия какого-то термина у поста следует использовать условный тег has_term() в пределах какой-то таксономии.
Параметры
Данный тег принимает три параметра:
$term (массив/строка/целое число, не обязателен): название термина, ID, слаг, или массив. (По умолчанию: пустой)
$taxonomy (строка, обязателен): название таксономии. (По умолчанию: пустой)
$post (объект/целое число, не обязателен): Проверяемый пост. (По умолчанию: NULL)
Пример использования has_term()
К примеру у вас интернет магазин, и вам нужно сообщить о каком-то событии всем пользователям, которые связаны с термином Dell:
1
<?php
2
3
if ( has_term( 'dell', 'laptops' ) ) {
4
5
echo '<div class="above-product-warning"><strong>' . __( 'Warning', 'translation-domain' ) . ':</strong> ' . __( 'We\'re switching suppliers for Dell laptops, so the shipments will be delayed until next week. Sorry about that!', 'translation-domain' ) . '</div>';
6
7
}
8
9
?>
37. Проверка комментария trackback: is_trackback()
Является ли комментарий типа "trackback"? Условный тег is_trackback() в помощь!
Параметры
Данный тег не принимает параметров.
38. Проверка активности опции Multisite: is_multisite()
Multisite не самая популярная опция. Если же нужно осуществить проверку на её активность, то следует воспользоваться тегом is_multisite().
Параметры
Данный тег не принимает параметров.
Пример использования is_multisite()
К примеру у вас есть плагин, который будет использовать другие классы, если активен режим Multisite:
1
<?php
2
3
if ( is_multisite() ) {
4
5
require_once( 'path/to/multisite-class.php' );
6
7
}
8
9
?>
39. Является ли страница архивом типов постов: is_post_type_archive()
Если вам необходимо узнать является ли текущая страница архивом типов постов, то с помощью условного тега is_post_type_archive() можно осуществить проверку.
Параметры
Данный тег принимает один параметр:
$post_types (массив/строка, не обязательный): название типа поста или массив из названий. (По умолчанию: значение не задано)