Условные теги в WordPress: 40-52

29 Мая 2022г. в 04:33

40. Является ли блог основным в вашей WordPress сети: is_main_site()
Если вы пользуетесь функцией WordPress мультисайт, то может возникнуть необходимость определить является ли текущий блог основным.

Параметры
Данный тег принимает один параметр:

$site_id (целое число, не обязателен): ID сайта для проверки. (По умолчанию: ID текущего сайта)
41. Проверка активности собственного меню: has_nav_menu()
При создании собственного навигационного меню необходимо указать его “расположение”, указав два параметра функции register_nav_menu. С помощью условного тега has_nav_menu() можно проверить наличие того или иного меню.

Параметры
Данный тег принимает один параметр:

$location (строка, не обязателен): Слаг расположения меню. (По умолчанию: значение не задано)
Использование has_nav_menu()
Предположим что для какого-то меню нужно подключить дополнительный JavaScript файл, но только в том случае, если оно активно. Вот что нужно для этого сделать:

1
<?php
2

3
if ( has_nav_menu( 'mytheme-footer-menu' ) ) {
4

5
wp_enqueue_script( 'mytheme-footer-menu-js', 'path/to/mytheme-footer-menu.js', array( 'jquery' ) );
6

7
}
8

9
?>
42. Проверка активности плагина в мультисайте: is_plugin_active_for_network()
Точно так же как is_plugin_active() условный тег is_plugin_active_for_network() определяет активность плагина в мутисайтовой установке. Это может быть полезно в случае необходимости определения активности плагина во всей сети блогов.

Параметры
Данный тег принимает один параметр:

$plugin (строка, обязателен): название плагина. (По умолчанию: не задано)
43. Проверка активности комментариев: comments_open()
comments_open() входит в группу самых часто используемых условных тегов. С его помощью можно определить активирована ли на блоге возможность оставлять комментарии.

Параметры
Условный тег принимает один параметр:

$post_id (целое число, не обязателен): ID поста. (По умолчанию: 0)
Использование comments_open()
К примеру вы хотите отпечатать какое-то сообщение перед формой ввода комментария, если такая возможность вообще доступна:

1
<?php
2

3
if ( comments_open() ) {
4

5
echo '<div class="comments-warning"><strong>' . __( 'Warning', 'translation-domain' ) . ':</strong> ' . __( 'All commenters are responsible for their own words!', 'translation-domain' ) . '</div>';
6

7
}
8

9
?>
44. Проверка наличия виджетов в сайдбаре: is_dynamic_sidebar()
Во многих темах активно используется отображение каких-то виджетов в сайдбарах. Благодаря тегу is_dynamic_sidebar() можно определить заполнен ли сайдбар каким-то виджетом.

Параметры
Данный тег не принимает параметров.

45. Проверка наличия нескольких авторов: is_multi_author()
Как показывает практика, на WordPress сайте не больше одного автора. Корпоративные сайты не требуют большего, так что в итоге у нас сформировалась сеть "персональных блогов". Если же вам нужно осуществить проверку на наличие более одного автора можете воспользоваться условным тегом is_multi_author().

Параметры
Данный тег не принимает параметров.

Использование is_multi_author()
К примеру вы разрабатываете плагин для блога, где будет трудиться множество авторов. При попытке установки на блог с одним автором нужно вывести соответствующее сообщение:

01
<?php
02

03
add_action( 'admin_notices', 'warn_single_authors' );
04

05
function warn_single_authors() {
06

07
if ( ! is_multi_author() ) {
08

09
echo '<div class="error">
10
<p>' . __( 'Sorry mate, this plugin only works for blogs with multiple authors!', 'translation-domain' ) . '</p>
11
</div>';
12

13
}
14

15
}
16

17
?>
46. Проверка активности пинга: pings_open()
Если вы до сих пор пользуетесь сервисами обновлений, то можете проверить доступен ли пинг для конкретной страницы. Для этого можно воспользоваться условным тегом pings_open().

Параметры
Данный тег не принимает параметров:

$post_id (целое число, не обязателен): ID поста. (По умолчанию: 0)
47. Проверка вывода фида: is_feed()
Я до сих пор являюсь любителем фида, хотя данная фишка уже находится на закате своего существования. В WordPress есть возможность вывода нескольких типов фидов. Если во время вывода вы хотите сделать что-то дополнительное, то можете воспользоваться тегом is_feed().

Параметры
Данный тег принимает один параметр:

$feeds (строка/массив, не обязателен): Тип фида. (По умолчанию: не задано)
Использование is_feed()
Скажем вы хотите добавить какой-то экстра-контент к каждому посту в фиде (для увеличения количества подписчиков). Для этого вам понадобится шорткод. Вот как можно это сделать:

01
<?php
02

03
// Usage: [feedonly]Hey there, feed readers![/feedonly]
04
// Source: http://www.wpbeginner.com/wp-tutorials/how-to-create-feed-only-content-in-wordpress-with-shortcode/
05

06
add_shortcode( 'feedonly', 'feedonly_shortcode' );
07

08
function feedonly_shortcode( $atts, $content = null ) {
09

10
if ( is_feed() ) {
11

12
return $content;
13

14
}
15

16
}
17

18
?>
48. Является ли страница годовым архивом: is_year()
Если вам необходимо определить является ли страница годовым архивом, то можете воспользоваться условным тегом is_year().

Параметры
Данный тег не принимает параметры.

49. Проверка аутентифицирован ли пользователь is_user_logged_in()
Отображение какой-то особой информации для аутентифицированного пользователя - это самое обычное дело. Для проверки факта аутентификации текущего пользователя следует использовать условный тег is_user_logged_in().

Параметры
Данный тег не принимает параметров.

Использование is_user_logged_in()
К примеру вы хотите как-то по особенному поприветствовать аутентифицированных пользователей. Вот как это можно сделать:

01
<?php
02

03
if ( is_user_logged_in() ) {
04

05
$current_user = wp_get_current_user();
06

07
echo __( 'Good to see you', 'translation-domain' ) . ', ' . $current_user->display_name . '!';
08

09
} else {
10

11
_e( 'Welcome to our website!', 'translation-domain' );
12

13
}
14

15
?>
50. Является ли вложение изображением: wp_attachment_is_image()
Данный тег очень прост: передаём ID поста в качестве параметра и получаем TRUE если вложением поста является файл JPG, JPEG, GIF или PNG (и FALSE в обратном случае).

Параметры
Данный тег принимает только один параметр:

$post_id (целое число, технически не обязателен): ID поста. (По умолчанию: 0)
Технически не обязателен, т.к. по умолчанию будет передан 0, что означает возврат не существующего поста.

51. Проверка существования типа поста: post_type_exists()
В некоторых ситуация может понадобится необходимость проверки существования того или иного типа поста. Для этого можно воспользоваться условным тегом post_type_exists().

Параметры
Данный тег принимает только один параметр:

$post_type (строка, обязателен): Название типа поста. (По умолчанию: нет значения)
Пример использования post_type_exists()
К примеру вы разрабатываете плагин для портфолио и хотите ввести новый тип поста "portfolio". Однако такой тип уже может существовать. Для вывода соответствующего сообщения можно сделать следующее:

01
<?php
02

03
add_action( 'admin_notices', 'same_post_type_warning' );
04

05
function same_post_type_warning() {
06

07
if ( post_type_exists( 'portfolio' ) ) {
08

09
echo '<div class="error">
10
<p><strong>' . __( 'Warning', 'translation-domain' ) . ':</strong> ' . __( 'A post type with the name "portfolio" has already been registered by another plugin or theme. This will most probably cause conflicts.', 'translation-domain' ) . '</p>
11
</div>';
12

13
}
14

15
}
16

17
?>
52. Проверка дня публикации поста: is_new_day()
Условный тег is_new_day() вернёт TRUE если день поста отличается от предыдущего.

Параметры
Данный тег не принимает параметров.