Условные теги в WordPress: 14-26
29 Мая 2022г. в 04:33В данной серии уроков мы разбираем условные теги в WordPress.
Начнём!
14. Проверка находимся ли мы на фронт-энде: is_front_page()
В WordPress, за "фронт-энд" можно считать как статическую страницу, так и список постов (Settings > Reading). С помощью тега is_front_page(), который возвращает TRUE, можно осуществить проверку.
Параметры
Данный тег не принимает параметров.
15. Есть ли у поста миниатюра: has_post_thumbnail()
Одним из важнейших элементов поста является миниатюра. С помощью has_post_thumbnail() можно определить её наличие или отсутствие.
Параметры
Данный тег принимает один параметр:
$post_id (целое число, не обязателен): ID поста. (По умолчанию: текущий пост)
Использование has_post_thumbnail()
Предположим, что у вас есть список постов, которые должны сопровождаться миниатюрой изображения. Если же такой миниатюры нет, то показывать изображение по умолчанию:
01
<?php
02
03
function mytheme_featured_image( $class = '' ) {
04
05
global $post;
06
07
$post_title = get_the_title();
08
09
if ( has_post_thumbnail( $post->ID ) ) {
10
11
$featured_image = get_the_post_thumbnail( $post->ID, 'thumbnail', array(
12
'alt' => esc_attr( $post_title ),
13
'class' => $class
14
) );
15
16
} else {
17
18
$featured_image = '<img src="' . get_stylesheet_directory_uri() . '/assets/default-thumb.jpg" alt="' . esc_attr( $post_title ) . '" class="default-thumb ' . $class . '" />';
19
20
}
21
22
return $featured_image;
23
24
}
25
26
/*
27
* Usage (inside the Loop):
28
* echo mytheme_featured_image( 'my-custom-class' );
29
*/
30
31
?>
16. Используется ли форма комментариев в отдельном окне": is_comments_popup()
Мы не должны косо смотреть на тех, кто использует темы 10-летней давности или на тех, кто любит ретро. Если вы разрабатываете плагин, то должны предусмотреть все варианты, включая темы, где область комментариев открывается в отдельном окне. Для проверки последнего факта следует использовать тег is_comments_popup().
Параметры
Данный метод не принимает параметров.
17. Является ли текущая страница 404: is_404()
"Не найдено" - это одна из страниц, которую мы не хотим видеть больше всего, поэтому мы должны как можно лучше её украсить. Любую страницу ошибки можно превратить в информативный источник, который поможет пользователю найти то, что надо. С помощью условного тега is_404() можно определить является ли текущая страница, страницей ошибки 404.
Параметры
Данный тег не принимает параметров.
Использование is_404()
Допустим вы разрабатываете плагин, который вносит в лог все ошибочные ссылки со страницы 404. Вот как это сделать:
01
<?php
02
03
add_filter( 'template_redirect', 'my_plugin_check_404_pages' );
04
05
function my_plugin_check_404_pages() {
06
07
if ( is_404() ) {
08
09
my_plugin_404_logger_function();
10
11
}
12
13
}
14
15
?>
18. Используется ли таксономия: taxonomy_exists()
Для проверки настроена ли таксономия можно использовать тег taxonomy_exists().
Параметры
Данные тег принимает только один параметр:
$taxonomy (строка, обязателен): Название таксономии. (По умолчанию: нет значения)
19. Является ли текущая страница - страницей результатов поиска: is_search()
Страница результатов поиска - одна из важнейших частей любого сайта на WordPress. Для проверки вы можете воспользоваться тегом is_search().
Параметры
Данный тег не принимает параметров.
Использование is_search()
Допустим вы хотите показать ссылку на страницу результатов поиска Google с искомой фразой. Вот как это сделать:
01
<?php
02
03
if ( is_search() ) {
04
05
$search_query = get_search_query();
06
07
echo '<div class="google-search"><a href="https://www.google.com.tr/search?q=' . $search_query . '">' . __( 'Search with Google', 'translation-domain' ) . '</a>';
08
09
}
10
11
?>
20. Является ли текущая страница - страницей архива тегов: is_tag()
С помощью условного тега is_tag() можно определить является ли текущая страница - страницей архива тегов. Нужно передать название тега, слаг, ID или массив из перечисленных значений!
Параметры
Данный тег принимает только один параметр:
$tag (массив/строка, не обязателен): ID тега, название, слаг или массив из перечисленных значений. (По умолчанию: не задано)
21. Проверка на наличие дополнительной выдержки: has_excerpt()
В WordPress существует несколько типов "выдержки" (отрывок): Если вы хотите сами написать, то для этого есть специальное поле, если нет, то так же есть автоматическая выдержка, которая будет сгенерированна (по умолчанию, первые 55 слов поста). С помощью тега has_excerpt() можно проверить наличие собственного отрывка.
Параметры
Данный тег принимает только один параметр:
$post_id (целое число, не обязателен): ID поста. (По умолчанию: текущий ID поста)
Использование has_excerpt()
Предположим вы хотите отобразить собственные отрывки постов на главной странице:
1
<?php
2
3
if ( has_excerpt() ) {
4
5
the_excerpt();
6
7
}
8
9
?>
22. Проверка первичного запроса: is_main_query()
При выводе постов WordPress использует класс WP_Query — будь то список или архивная страница. Множество функций используют класс WP_Query, включая is_main_query(). Данный тег определяет, что “запрос не вторичен”, а "первичен".
Параметры
Данный тег не принимает параметров.
23. Проверка наличия тега у поста: has_tag()
Иногда может возникнуть необходимость проверки наличия какого-то тега и текущего поста. Для проверки данного факта можно использовать тег has_tag(). (Заметка: можно осуществить проверку и нескольких тегов).
Параметр
Данный тег принимает два параметра:
$tag (массив/строка, не обязателен): Название тега, ID, слаг, или массив перечисленных значений. (По умолчанию: нет значения)
$post (объект, не обязателен): Проверяемый пост. (По умолчанию: текущий пост)
Использование has_tag()
К примеру у вас предусмотрены маркеры для постов ("NEW", "FEATURED" и "OBSOLETE") в соответствии с тегами, которые были присвоены. Вот как это сделать:
01
<?php
02
03
if ( has_tag( 'badge-new' ) ) {
04
05
echo '<div class="post-content badge-new">';
06
07
} else if ( has_tag( 'badge-featured' ) ) {
08
09
echo '<div class="post-content badge-featured">';
10
11
} else if ( has_tag( 'badge-obsolete' ) ) {
12
13
echo '<div class="post-content badge-obsolete">';
14
15
} else {
16
17
echo '<div class="post-content">';
18
19
}
20
21
// Post content.
22
23
echo '</div>';
24
25
?>
24. Проверка файла установки блога (?): is_blog_installed()
Указанный тег можно использовать чтобы определить установлен ли блог. Его целесообразно использовать в каких-то сторонних WordPress инструментах.
Параметры
Данный тег не принимает параметров.
25. Является ли текущий пользователь "супер администратором": is_super_admin()
Существует специальная роль "супер администратора", которой доступны все функции сайта. Для проверки является ли текущий пользователь “супер администратором” следует использовать тег is_super_admin().
Параметры
Данный тег принимает один параметр:
$user_id (целое число, не обязателен): ID пользователя. (По умолчанию: текущий пользователь)
Пример использования is_super_admin()
К примеру вам не нравится стандартное приветствие. Вы можете это подправить:
01
<?php
02
03
// Source: http://www.paulund.co.uk/change-the-wordpress-howdy-text
04
05
add_filter( 'admin_bar_menu', 'replace_howdy' );
06
07
function replace_howdy( $wp_admin_bar ) {
08
09
$my_account = $wp_admin_bar->get_node( 'my-account' );
10
11
$newtitle = __( 'Hi boss!', 'translation-domain' );
12
13
$wp_admin_bar->add_node( array(
14
'id' => 'my-account',
15
'title' => $newtitle
16
) );
17
18
return $wp_admin_bar;
19
20
}
21
22
?>
26. Является ли текущая страница - отдельной “страницей”: is_page()
В WordPress понятие "страниц" является одним из ключевых. Если вам нужно это определить, то можете воспользоваться условным тегом is_page().
Параметры
Данный тег принимает только один параметр:
$page (массив/строка, не обязателен): ID страницы, название, слаг или массив из перечисленных значений. (По умолчанию: нет значения)