Условные теги в WordPress: 53-65

29 Мая 2022г. в 04:33

53. Страница или пост: is_singular()
Это один из моих самых любимых тегов: is_singular(). По сути это комбинация других тегов таких как is_single(), is_attachment() и is_page(). К тому же если указать тип поста, то проверка будет осуществлена исключительно по переданным значениям.

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

$post_types (массив/строка, не обязателен): Тип поста или список типов. (По умолчанию: не задано)
54. Работает ли функция в "Цикле": in_the_loop()
Многие не согласятся если я скажу, что “цикл” - это один из ключевых терминов в WordPress. Однако, благодаря условному тегу in_the_loop() можно определить вызывается ли функция в цикле или нет.

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

Использование in_the_loop()
Предположим, что в вашем плагине должна быть функция, которая вызывается в цикле, и вы хотите вывести ошибку, если пользователь попытается вызвать её вне цикла. Вот как этого добиться:

01
<?php
02

03
function my_awesome_plugin_function() {
04

05
if ( ! in_the_loop() ) {
06

07
echo '<!-- ' . __( 'We\'re terribly sorry, but the', 'translation-domain' ) . ' <code>my_awesome_plugin_function()</code> ' . __( 'function of the plugin "My Awesome Plugin" must run inside WordPress Loops!', 'translation-domain' ) . ' -->';
08

09
} else {
10

11
// Run the awesome code because we're in the loop!
12

13
}
14

15
}
16

17
?>
55. Проверка “не активности” плагина: is_plugin_inactive()
По названию тега можно определить его предназначение: В отличии от is_plugin_active(), is_plugin_inactive() проверяет наличие установленного, но не активного плагина.

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

$plugin (строка, обязателен): название под-папки плагина. (По умолчанию: не задано)
56. Является ли страница архивом авторов: is_author()
Параметры
Данный тег принимает только один параметр:

$author (строка/целое число, не обязателен): Имя пользователя или его идентификатор. (По умолчанию: не задано)
Пример использования is_author()
Предположим, что вы разрабатываете плагин для Google Analytics и хотите передать какую-то особую переменную в случае отображения архива авторов. Вот как это сделать:

01
<script>
02

03
/* Some Google Analytics related JavaScript here. */
04

05
<?php
06

07
if ( is_author() ) {
08

09
echo '_gaq.push( [ "_setCustomVar", 1, "' . __( 'Author Archives', 'translation-domain' ) . '", "' . esc_attr( get_query_var( 'author_name' ) ) . '" ] );' . "\n";
10

11
}
12

13
?>
14

15
_gaq.push( [ "_trackPageview" ] );
16

17
</script>
57. Является ли страница "листингом": is_paged()
В WordPress есть возможность разбиения материала на страницы. С помощью условного тега is_paged(), вы можете определить разбит ли список материалов по страницам или нет, а так же удостовериться что это значение больше единицы.

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

58. Отображена ли панель инструментов: is_admin_bar_showing()
Всех любителей WordPress можно разбить на две категории: те кто любят панель инструментов, и те кто её ненавидят. Вне зависимости от этого, благодаря тегу is_admin_bar_showing() можно узнать активирована данная панель или нет.

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

Пример использования is_admin_bar_showing()
К примеру вы хотите добавить собственный стилей для панели инструментов, если данный блок активирован. Решение:

01
<?php
02

03
add_action( 'wp_enqueue_scripts', 'mytheme_admin_bar_styles' );
04

05
function mytheme_admin_bar_styles() {
06

07
if ( is_admin_bar_showing() ) {
08

09
wp_enqueue_style( 'mytheme-admin-bar', 'path/to/your/admin-bar.css' );
10

11
}
12

13
}
14

15
?>
59. Является ли страница дневным архивом: is_day()
Несмотря на то, что данный тип архива является одним из самых редко-используемых, всё равно полезно знать как определить его отображение: is_day().

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

60. Используется ли сайдбар: is_active_sidebar()
Данный тег очень пригодится тем, кто создаёт темы. С его помощью можно определить есть ли в сайдбаре активные виджеты.

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

$sidebar (строка/целое число, обязателен): Название сайдбара или идентификатор. (По умолчанию: не задано)
Пример использования is_active_sidebar()
Данный пример взят из темы Twenty Ten — отображение блока в случае активности сайдбара:

01
<?php
02

03
if ( is_active_sidebar( 'secondary-widget-area' ) ) { ?>
04

05
<div id="secondary" class="widget-area" role="complementary">
06
<ul class="xoxo">
07
<?php dynamic_sidebar( 'secondary-widget-area' ); ?>
08
</ul>
09
</div> <!-- #secondary .widget-area -->
10

11
<?php } ?>
61. Проверка наличия пользователя в таблице Users по его имени: username_exists()
Это третий тег, который возвращает значение отличное от TRUE. Условный тег username_exists() проверяет наличие записи по имени пользователя и возвращает его идентификатор в случае успеха. Иначе будет возвращено значение NULL.

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

$username (строка, обязателен): Имя пользователя для проверки. (По умолчанию: не задано)
62. Является ли страница анонсом поста: is_preview()
Если вам не нужно загружать какой-то рекламный контент в случае вывода анонса, то можете воспользоваться тегом is_preview().

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

Пример использования is_preview()
Неплохо было бы “спрятать” страницы с превью от Google Analytics. Это можно сделать так:

01
<?php
02

03
if ( ! is_preview() ) {
04

05
echo '<script>
06
<!-- Your Google Analytics code. -->
07
</script>';
08

09
}
10

11
?>
63. Проверка состояния скрипта: wp_script_is()
Данный тег пригодится разработчикам плагинов, которые хотят убедиться, что загружаемые скрипты не будут конфликтовать. Можно определить факт регистрации поста, его наличия в очереди, вывода/отсутствия на странице.

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

$handle (строка, обязателен): название скрипта (в нижнем регистре). (По умолчанию: не задано)
$list (строка, не обязателен): Одно из четырёх значений — "registered", "enqueued", "done" (enqueued и printed), или "to_do" (enqueued, но не printed). (По умолчанию: "enqueued")
64. Проверка статуса стилей: wp_style_is()
Данный тег является братом близнецом wp_script_is() и касается таблиц стилей.

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

$handle (строка, обязателен): название файла со стилями (в нижнем регистре). (По умолчанию: не задано)
$list (строка, не обязателен): Одно из четырёх значений — "registered", "enqueued", "done" (enqueued и printed), или "to_do" (enqueued, но не printed). (По умолчанию: "enqueued")
Пример использования wp_style_is()
Предположим, что ваша тема основывается на Bootstrap. Перед её установкой вы хотите удостовериться, что основной файл стиля Bootstrap присутствует в очереди на добавление:

01
<?php
02

03
add_action( 'wp_enqueue_scripts', 'bootstrap_styles' );
04

05
function bootstrap_styles() {
06

07
if ( wp_style_is( 'bootstrap-main' ) ) {
08

09
wp_enqueue_style( 'my-custom-bootstrap-theme', 'path/to/custom-theme.css' );
10

11
}
12

13
}
14

15
?>
65. Проверка факта иерархичности таксономии: is_taxonomy_hierarchical()
Вы знаете, что в Wordpress есть возможность создания целого “дерева” из категорий — назначать родительские и дочерние элементы. Для определения данного факта можете воспользоваться условным тегом is_taxonomy_hierarchical().

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

$taxonomy (строка, обязателен): Название таксономии. (По умолчанию: не задано)