В этой серии статей мы рассмотрим одну из основных функций WordPress: условные теги. В этой четвертой части мы продолжим знакомство с условными тегами. Не забудьте проверить предыдущие части, если вы еще не сделали.
Давайте начнем!
27. Проверка, является ли страница страницей «Ежемесячные архивы»: is_month()
В WordPress наиболее часто используемым типом архивов на основе дат, вероятно, являются ежемесячные архивы. Когда вам нужно определить, выполняется ли ваш код на странице ежемесячного архива, вам поможет is_month()
тег is_month()
.
Принятые параметры
Этот условный тег не принимает никаких параметров.
28. Проверка возможностей текущей темы: current_theme_supports()
При разработке плагинов вам может понадобиться проверить, поддерживает ли активная тема миниатюры, форматы сообщений, пользовательские заголовки или даже виджеты. С помощью current_theme_supports()
вы можете проверить, поддерживает ли используемая тема указанную вами функцию.
Принятые параметры
Этот условный тег имеет только один параметр:
-
$feature
(строка, необязательно): имя функции. (По умолчанию: нет)
Названия функций:
- «пост-миниатюра»
- «пост-форматы»
- «Пользовательского заголовок»
- «Заказ фона»
- «меню»
- «автоматические облучатели ссылка»
- «Редактор стиля»
- «виджеты»
- ‘Html5’
Пример использования current_theme_supports()
Допустим, вы разрабатываете плагин специально для тем WordPress с функцией «пользовательских фонов». Ваш плагин будет бесполезен для тем, которые не поддерживают пользовательские фоны, поэтому вам нужно отобразить сообщение об ошибке в панели администрирования, чтобы проинформировать пользователя. Вот что вы делаете:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
<?php
add_action( ‘admin_notices’, ‘custom_bg_feature_warning’ );
function custom_bg_feature_warning() {
if ( ! current_theme_supports( ‘custom-background’ ) ) {
echo ‘<div class=»error»>
<p>’ .
</div>’;
}
}
?>
|
29. Проверка активности указанного плагина: is_plugin_active()
Работая только в панели администрирования, is_plugin_active()
тег is_plugin_active()
помогает вашему коду узнать, активен ли данный плагин. Этот условный тег может быть полезен, если вы пишете «плагины аддонов» для популярных плагинов (например, WooCommerce) или базовых платформ, установленных как плагины (например, Redux Framework).
Принятые параметры
Этот условный тег имеет только один параметр:
-
$plugin
(строка, обязательно): имя плагина или подкаталога. (По умолчанию: нет)
30. Проверка, является ли URL-адрес локальным is_local_attachment()
: is_local_attachment()
Вложения WordPress — это благословение при правильном использовании, но как узнать, является ли URL-адрес вложением? Если вы работаете с URL-адресами во время разработки, is_local_attachment()
тег is_local_attachment()
может быть очень полезен для вас: он проверяет, загружен ли данный URL-адрес в ту же установку WordPress, что и вложение.
Принятые параметры
Этот условный тег имеет только один параметр:
-
$url
(строка, обязательная): URL для проверки. (По умолчанию: нет)
Пример использования для is_local_attachment()
Поскольку этот условный тег довольно прост, пример также будет простым. Представьте, что вы разрабатываете плагин, и вам нужно проверить URL (созданные другой функцией, которую вы создали), чтобы увидеть, являются ли они локальными вложениями или нет:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
<?php
$url = some_url_generator_function();
if ( is_local_attachment( $url ) ) {
_e( ‘Yep, this is a local attachment!’, ‘translation-domain’ );
} else {
_e( ‘Nope, this is not a local attachment.’, ‘translation-domain’ );
}
?>
|
31. Проверка того, является ли страница архивом на основе времени: is_time()
Знаете ли вы, что WordPress имеет часовые, минутные и даже вторые архивы? (Если честно, я не знал, что вы могли бы создавать такие архивы до написания этой серии. Писать в Tuts + тоже можно в образовательном путешествии!)
Это не из коробки, что означает, что вы не можете набрать mywebsite.com/2014/02/22/18/30/
и получить архивы на 18:30 22 февраля 2014 года; но вы можете создать его с помощью класса WP_Query
. В любом случае: если вы хотите обнаруживать подобные архивы на основе времени, вы можете использовать is_time()
тег is_time()
.
Принятые параметры
Этот условный тег не принимает никаких параметров.
32. Проверка, является ли текущий is_rtl()
RTL: is_rtl()
На некоторых языках, в основном в странах Ближнего Востока, текст пишется справа налево, а не слева направо. Как разработчик WordPress, вы должны учитывать всех пользователей WordPress, и если вы хотите, чтобы ваша тема или плагин хорошо работали с сайтами WordPress с текстом RTL, вы должны использовать is_rtl()
чтобы определить, является ли локаль RTL.
Принятые параметры
Этот условный тег не принимает никаких параметров.
Пример использования для is_rtl()
Большинство веб-дизайнеров создают отдельные таблицы стилей для локали RTL — это обычная практика. И если вы хотите загрузить свою таблицу стилей RTL условно, вот что вы делаете:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
<?php
add_action( ‘wp_enqueue_scripts’, ‘mytheme_enqueue_styles’ );
function mytheme_enqueue_styles() {
if ( is_rtl() ) {
wp_enqueue_style( ‘style-rtl’, plugins_url( ‘/css/style-rtl.css’, __FILE__ ) );
}
}
?>
|
33. Проверка того, является ли страница страницей «Архива» пользовательской таксономии: is_tax()
Условный тег is_tag()
может обнаруживать архивы тегов, но он не может работать с пользовательскими таксономиями. Чтобы определить, отображается ли страница архива таксономии, вы можете использовать is_tax()
. По умолчанию он включает все страницы архива таксономии, включая обычные теги. Но у него есть два параметра, поэтому вы можете настроить таргетинг на отдельные страницы архива таксономии или даже на определенные термины.
Принятые параметры
Этот условный тег имеет только один параметр:
-
$taxonomy
(массив / строка, необязательно): слаг таксономии или массив слагов. (По умолчанию: нет) -
$term
(массив / строка / целое число, необязательно): идентификатор термина, имя, слаг или их массив. (По умолчанию: нет)
34. Проверка, является ли страница страницей вложения: is_attachment()
При создании плагина (или темы) вы можете узнать, когда отображается страница вложения. Условный тег is_attachment()
поможет вам: он возвращает TRUE
на странице вложения и FALSE
любом другом месте.
Принятые параметры
Этот условный тег не принимает никаких параметров.
Пример использования для is_attachment()
Допустим, вы хотите отобразить ссылку «Вернуться к сообщению» над вложением. Вот что вы делаете:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
<?php
if ( is_attachment() ) {
// Get attachment’s parent.
$parent = get_post_field( ‘post_parent’, $id );
// Get permalink of the parent post.
$parent_link = get_permalink( $parent );
// Echo the link.
echo ‘<a href=»‘ . $parent_link . ‘» class=»parent-post-link»>’ .
}
?>
|
35. Проверка, существует ли данный термин: term_exists()
Это второй условный тег, который не возвращает TRUE
и FALSE
, но имеет более полезную информацию: term_exists()
тег term_exists()
проверяет, существует ли термин таксономии, и возвращает идентификатор термина (если таксономия не указана) или массив таксономии и спаривания терминов вместо TRUE
. Если указанный термин не существует, он возвращает 0
или NULL
.
Принятые параметры
Этот условный тег имеет три параметра:
-
$term
(строка / целое число, обязательно): имя или идентификатор термина. (По умолчанию: нет) -
$taxonomy
(строка, необязательно): название таксономии. (По умолчанию: пусто) -
$parent
(integer, необязательный): идентификатор родительского термина (для ограничения поиска под ним). (По умолчанию: 0)
36. Проверка has_term()
в сообщении has_term()
термина: has_term()
Мы увидели, что можем использовать has_tag()
если хотим найти тег в сообщении. Что, если мы хотим сделать то же самое, но с условием таксономии? Легко: has_term()
тег has_term()
имеет третий параметр (второй по порядку), который позволяет нам указать пользовательскую таксономию.
has_tag()
факт: даже has_tag()
тег has_tag()
использует has_term()
для возврата TRUE
или FALSE
! Как и в has_tag()
функции has_tag()
, has_term()
также позволяет указывать более одного термина (но только в одной таксономии).
Принятые параметры
Этот условный тег имеет три параметра:
-
$term
(массив / строка / целое число, необязательно): имя термина, идентификатор, слаг или их массив. (По умолчанию: пусто) -
$taxonomy
(строка обязательна): название таксономии. (По умолчанию: пусто) -
$post
(объект / целое число, необязательно): публикация для проверки. (По умолчанию:NULL
)
Пример использования has_term()
Допустим, у вас есть веб-сайт электронной коммерции, и вы собираетесь сменить поставщика на ноутбуки Dell, поэтому вы хотите сообщить своим пользователям, что поставки будут отложены до следующей недели. Вот что вы делаете:
1
2
3
4
5
6
7
8
9
|
<?php
if ( has_term( ‘dell’, ‘laptops’ ) ) {
echo ‘<div class=»above-product-warning»><strong>’ .
}
?>
|
37. Проверка, является ли это трекбэком (и мы в 2007 году): is_trackback()
Привет, старожил! Вы хотите узнать, является ли комментарий «трекбэком»? Условный тег is_trackback()
поможет вам в этом!
Принятые параметры
Этот условный тег не принимает никаких параметров.
38. Проверка, используется ли WordPress is_multisite()
: is_multisite()
Будучи не очень популярной функцией WordPress, Multisite очень удобен при необходимости. Если вы хотите, чтобы ваш код работал в обычных установках WordPress и вел себя по-разному в установках с несколькими is_multisite()
тег is_multisite()
может помочь вам определить, включена ли поддержка нескольких is_multisite()
.
Принятые параметры
Этот условный тег не принимает никаких параметров.
Пример использования для is_multisite()
Допустим, вы разрабатываете плагин, и если Multisite включен, плагин требует другого класса от вашего плагина. Вот что вы делаете:
1
2
3
4
5
6
7
8
9
|
<?php
if ( is_multisite() ) {
require_once( ‘path/to/multisite-class.php’ );
}
?>
|
39. Проверка того, является ли страница архивом типа is_post_type_archive()
: is_post_type_archive()
Иногда вы можете захотеть, чтобы ваш код знал, отображается ли страница архива для пользовательского типа записи (или нескольких пользовательских типов публикации, или любого другого пользовательского типа записи). Условный тег is_post_type_archive()
делает именно это: он проверяет, относится ли запрос к странице архива для пользовательского типа записи.
Принятые параметры
Этот условный тег имеет только один параметр:
-
$post_types
(массив / строка, необязательно): имя типа записи или массив имен типов записей. (По умолчанию: нет)
Вывод
В этой части мы рассмотрели еще один пакет из 65 задокументированных условных тегов в WordPress. В следующих частях мы рассмотрим оставшиеся 26. Если у вас есть какие-либо вопросы или комментарии, поделите их ниже — и если вам понравилась эта статья, не забудьте поделиться ею!
Увидимся в следующей части!