В этой серии статей мы рассмотрим одну из основных функций WordPress: условные теги. В этой пятой части мы продолжим знакомство с условными тегами. Не забудьте проверить предыдущие части, если вы еще не сделали.
Давайте начнем!
40. Проверка, является ли блог «основным сайтом» сети: is_main_site()
Если вы разрабатываете для WordPress Multisite, в конце концов наступит момент, когда вам нужно будет определить основной сайт. Условный тег is_main_site
поможет вам в этом: Он определяет, является ли данный идентификатор сайта основным сайтом сети.
Принятые параметры
Этот условный тег имеет только один параметр:
-
$site_id
(целое число, необязательно): идентификатор сайта для проверки. (По умолчанию: текущий идентификатор сайта)
41. Проверка, есть ли у местоположения меню назначенное меню: has_nav_menu()
При создании пользовательского меню навигации вам необходимо указать «местоположение меню» с двумя параметрами функции (ей) register_nav_menu(s)
(s). Условный тег has_nav_menu()
проверяет, есть ли пользовательское меню, назначенное пользователю для данного местоположения.
Принятые параметры
Этот условный тег имеет только один параметр:
-
$location
(строка, необязательно): фрагмент меню. (По умолчанию: нет)
Пример использования has_nav_menu()
Допустим, для правильной работы одного из пользовательских мест меню вашей темы требуется небольшой файл JavaScript, поэтому вы хотите ставить сценарий в очередь только в том случае, если меню используется пользователем. Вот что вы делаете:
1
2
3
4
5
6
7
8
9
|
<?php
if ( has_nav_menu( ‘mytheme-footer-menu’ ) ) {
wp_enqueue_script( ‘mytheme-footer-menu-js’, ‘path/to/mytheme-footer-menu.js’, array( ‘jquery’ ) );
}
?>
|
42. Проверка, is_plugin_active_for_network()
ли указанный плагин в is_plugin_active_for_network()
: is_plugin_active_for_network()
Подобно is_plugin_active()
, is_plugin_active_for_network()
тег is_plugin_active_for_network()
определит, является ли данный плагин активным … в установке с несколькими сайтами. Это может быть полезно, если ваш код должен знать, активен ли другой плагин по всей сети, а не по одному сайту.
Принятые параметры
Этот условный тег имеет только один параметр:
-
$plugin
(строка, обязательно): имя плагина или подкаталога. (По умолчанию: нет)
43. Проверка наличия комментариев: comments_open()
Один из наиболее часто используемых условных тегов — comments_open()
. С помощью этой функции в вашем операторе if
вы можете определить, включены ли комментарии в текущем сообщении.
Принятые параметры
Этот условный тег имеет только один параметр:
-
$post_id
(целое число, необязательно): идентификатор записи. (По умолчанию: 0)
Пример использования для comments_open()
Допустим, вы хотите вывести предупреждение перед разделом комментариев, если для сообщения включены комментарии. Вот что вы делаете:
1
2
3
4
5
6
7
8
9
|
<?php
if ( comments_open() ) {
echo ‘<div class=»comments-warning»><strong>’ .
}
?>
|
44. Проверка наличия на боковой панели is_dynamic_sidebar()
либо виджетов: is_dynamic_sidebar()
Многие темы WordPress используют боковые панели для отображения содержимого виджета. Но если вы разрабатываете плагин или тему и хотите определить неиспользуемые боковые панели, вы можете использовать is_dynamic_sidebar()
тег is_dynamic_sidebar()
— он проверяет, активна ли боковая панель и используются ли в ней какие-либо виджеты.
Принятые параметры
Этот условный тег не принимает никаких параметров.
45. Проверка is_multi_author()
в блоге более одного автора: is_multi_author()
Я думаю, что большинство сайтов WordPress работают только с одним пользователем. Корпоративным веб-сайтам обычно не требуется более одного пользователя, а в Интернете полно «личных блогов» (что хорошо, не поймите меня неправильно). Однако вы можете проверить, опубликовали ли сообщения более одного автора. Если это так, is_multi_author()
может помочь вам обнаружить установки WordPress с несколькими авторами.
Принятые параметры
Этот условный тег не принимает никаких параметров.
Пример использования для is_multi_author()
Допустим, вы создаете плагин только для блогов с несколькими авторами и хотите предупредить отдельных авторов, что этот плагин не будет работать для них. Вот что вы делаете:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
<?php
add_action( ‘admin_notices’, ‘warn_single_authors’ );
function warn_single_authors() {
if ( ! is_multi_author() ) {
echo ‘<div class=»error»>
<p>’ .
</div>’;
}
}
?>
|
46. Проверка, открыты ли pings_open()
: pings_open()
Если вы по- прежнему используете трекбэки по какой-либо причине (или вам нужен плагин для работы с действительно старыми блогами), вы можете определить, включены ли трекбэки и эхо-запросы в конкретном посте (или отображаемом посте) с помощью pings_open()
Условный тег.
Принятые параметры
Этот условный тег имеет только один параметр:
-
$post_id
(целое число, необязательно): идентификатор записи. (По умолчанию: 0)
47. Проверка is_feed()
: is_feed()
Я до сих пор люблю каналы, но в настоящее время они являются устаревшей частью Интернета. И WordPress использует их тоже: в своей основе он поддерживает четыре разных типа каналов. Если вы хотите, чтобы ваша функция знала, когда она работает в фиде, вы можете использовать is_feed()
тег is_feed()
— он проверяет, является ли текущий запрос фидом.
Принятые параметры
Этот условный тег имеет только один параметр:
-
$feeds
(строка / массив, необязательно): типы$feeds
. (По умолчанию: нет)
Пример использования для is_feed()
Допустим, вы хотите публиковать дополнительный контент в каждом сообщении для своих каналов (чтобы побудить больше людей подписаться). Вам понадобится короткий код. Вот что вы делаете:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
<?php
// Usage: [feedonly]Hey there, feed readers![/feedonly]
// Source: http://www.wpbeginner.com/wp-tutorials/how-to-create-feed-only-content-in-wordpress-with-shortcode/
add_shortcode( ‘feedonly’, ‘feedonly_shortcode’ );
function feedonly_shortcode( $atts, $content = null ) {
if ( is_feed() ) {
return $content;
}
}
?>
|
48. Проверка того, является ли страница страницей годового архива: is_year()
В блогах, которые вы пишете не часто, возможно, лучше рекламировать годовые архивы, а не ежемесячные. А если вы хотите добавить другую функциональность или отобразить другой дизайн, вы можете использовать is_year()
для обнаружения is_year()
страниц архива.
Принятые параметры
Этот условный тег не принимает никаких параметров.
49. Проверка, является ли посетитель зарегистрированным пользователем is_user_logged_in()
Обычно для вошедших в систему пользователей запускается другой код: это может быть новый пункт меню, это может быть дополнительное поле для комментариев или совершенно другой дизайн веб-сайта. В любом случае, вы можете обнаружить вошедших в систему пользователей с помощью is_user_logged_in()
.
Принятые параметры
Этот условный тег не принимает никаких параметров.
Пример использования для is_user_logged_in()
Допустим, вы хотите приветствовать своих пользователей не так, как посетители. Вот что вы делаете:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
<?php
if ( is_user_logged_in() ) {
$current_user = wp_get_current_user();
echo __( ‘Good to see you’, ‘translation-domain’ ) .
} else {
_e( ‘Welcome to our website!’, ‘translation-domain’ );
}
?>
|
50. Проверка того, является ли wp_attachment_is_image()
изображением: wp_attachment_is_image()
Работа с этим условным тегом очень проста: вы передаете идентификатор записи в качестве параметра, а условный тег возвращает значение TRUE
если вложение сообщения является файлом JPG, JPEG, GIF или PNG (и FALSE
если это не так).
Принятые параметры
Этот условный тег имеет только один параметр:
-
$post_id
(целое, практически обязательное, технически необязательное): идентификатор сообщения. (По умолчанию: 0)
Почему «фактически требуется» и «технически необязательно»? Поскольку по умолчанию он равен 0, это означает, что если вы используете этот условный тег без его параметра, он попытается вернуть сообщение, которое не существует.
51. Проверка, существует ли данный тип записи: post_type_exists()
В некоторых сценариях было бы неплохо проверить, используется ли определенный пользовательский тип записи. (Например, если вы создаете плагин для портфолио, вы можете попытаться скопировать записи из часто используемого имени типа записи для портфелей.) Для этого вы можете использовать post_type_exists()
тег post_type_exists()
.
Принятые параметры
Этот условный тег имеет только один параметр:
-
$post_type
(string, обязательный): имя типа записи. (По умолчанию: нет)
Пример использования для post_type_exists()
Допустим, вы разрабатываете плагин «портфолио» и выбрали пользовательское имя типа «портфолио» (естественно). Но многие разработчики используют одно и то же имя для типов сообщений портфолио, поэтому вам нужно предупредить пользователя, если другой плагин или тема уже зарегистрировали тип сообщения:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
<?php
add_action( ‘admin_notices’, ‘same_post_type_warning’ );
function same_post_type_warning() {
if ( post_type_exists( ‘portfolio’ ) ) {
echo ‘<div class=»error»>
<p><strong>’ .
</div>’;
}
}
?>
|
52. Проверка, опубликована ли текущая запись в новый день: is_new_day()
Некоторые функции WordPress решают is_new_day()
проблемы, и is_new_day()
является одной из них: этот конкретный is_new_day()
тег возвращает TRUE
если день текущего сообщения отличается от предыдущего.
Принятые параметры
Этот условный тег не принимает никаких параметров.
Вывод
В этой части мы рассмотрели еще один пакет из 65 задокументированных условных тегов в WordPress. В следующей части мы рассмотрим оставшиеся 13. Если у вас есть какие-либо вопросы или комментарии, поделитесь ими ниже — и если вам понравилась эта статья, не забудьте поделиться ею!
Увидимся в следующей части!