Руководство по условным тегам в WordPress. Теги c 14 по 26
В этой серии статей мы знакомимся с одной из замечательных особенностей WordPress: условными тегами. В этой части мы рассмотрим новые условные теги. Также рекомендую ознакомиться с предыдущими частями данной серии.
- Проверяем, является ли открытая страница главной: is_front_page()
- Проверяем, есть ли миниатюры у записи: has_post_thumbnail()
- Проверка использования темой всплывающих окон для комментариев: is_comments_popup()
- Проверка, является ли страница сообщением ошибки 404: is_404()
- Проверка, существует ли таксономия: taxonomy_exists()
- Проверка, отображает ли текущая страница результаты поиска: is_search()
- Проверка, является ли отображаемая архивной: is_tag()
- Проверка записи на наличие короткого описания, заданного пользователем: has_excerpt()
- Проверка, основной ли это запрос: is_main_query()
- Проверка, имеет ли запись определенные теги: has_tag()
- Проверка, установлена ли CMS: is_blog_installed()
- Проверяем, есть ли у пользователя права супер администратора: is_super_admin()
- Проверка на то, является ли страница "Страницей": is_page()
- В заключение
14. Проверяем, является ли открытая страница главной: is_front_page()
В WordPress, главной страницей ("front page") может быть как статическая страница WordPress, так и динамический список из последних записей блога (Настройки > Чтение) (Settings > Reading). Условный тег is_front_page() возвращает значение TRUE, когда отображена главная страница.
Допустимые параметры
Этот тег не использует параметров.
15. Проверяем, есть ли миниатюры у записи: has_post_thumbnail()
Миниатюра является составной частью новой записи или страницы. Условный тег has_post_thumbnail() определяет, привязаны ли миниатюры к выбранному посту или же нет.
Допустимые параметры
У этого условного тега всего один параметр:
- $post_id (тип ‘integer’, необязательный): ID записи. Значение по умолчанию: ID текущего поста.
Пример использования условного тега has_post_thumbnail()
Предположим, что вы разрабатываете тему, в которой каждый пост блога должен иметь миниатюру, поэтому вам нужно вывести миниатюру по умолчанию в тех записях, где она не определена.
Вот как это сделать:
<?php
function mytheme_featured_image( $class = '' ) {
global $post;
$post_title = get_the_title();
if ( has_post_thumbnail( $post->ID ) ) {
$featured_image = get_the_post_thumbnail( $post->ID, 'thumbnail', array(
'alt' => esc_attr( $post_title ),
'class' => $class
) );
} else {
$featured_image = '<img src="' . get_stylesheet_directory_uri() .
'/assets/default-thumb.jpg" alt="' . esc_attr( $post_title ) . '
" class="default-thumb ' . $class . '" />';
}
return $featured_image;
}
/*
* Использование (внутри цикла):
* echo mytheme_featured_image( 'my-custom-class' );
*/
?>
16. Проверка использования темой всплывающих окон для комментариев: is_comments_popup()
Если вы разрабатываете плагин, то стоит предусмотреть возможность его работы в любых условиях. Это касается тем, которые используют всплывающее окно для комментариев. Чтобы это определить, можно использовать тег is_comments_popup().
Допустимые параметры
Этот тег не использует параметров.
17. Проверка, является ли страница сообщением ошибки 404: is_404()
Ошибка «Страница не найдена» – наименее желаемая страница, которую мы хотим видеть, поэтому мы никогда не задумываемся о том, как работает система страниц 404. Условный тег is_404() определяет, является ли отображаемая в данный момент страница, страницей 404 ошибки.
Допустимые параметры
Этот тег не использует параметров.
Пример использования условного тега is_404()
Если вы разрабатываете плагин, который фиксирует адреса несуществующих ссылок на сайте, и хотите, чтобы функция срабатывала каждый раз, когда появляется страница 404, то делается это следующим образом:
<?php
add_filter( 'template_redirect', 'my_plugin_check_404_pages' );
function my_plugin_check_404_pages() {
if ( is_404() ) {
my_plugin_404_logger_function();
}
}
?>
18. Проверка, существует ли таксономия: taxonomy_exists()
Если вам нужно проверить, была ли уже зарегистрирована таксономия, вы можете использовать в вашем коде условный тег taxonomy_exists().
Допустимые параметры
У этого условного тега всего один параметр:
- $taxonomy (тип ‘string’, обязательный): Имя таксономии. Значения по умолчанию нет.
19. Проверка, отображает ли текущая страница результаты поиска: is_search()
Результаты поиска - важная часть сайтов на платформе WordPress. И если вы разрабатываете плагин или тему, то можете определять эти страницы с помощью условного тега is_search().
Допустимые параметры
Этот тег не использует параметров.
Пример использования условного тега is_search()
Допустим, что вам нужно включить в результаты поиска выдачу из Google по тому же запросу.
Вот как это делается:
<?php
if ( is_search() ) {
$search_query = get_search_query();
echo '<div class="google-search">
<a href="https://www.google.com.tr/search?q=' . $search_query . '">
' . __( 'Искать с помощью Google', 'translation-domain' ) . '</a>';
}
?>
20. Проверка, является ли отображаемая архивной: is_tag()
Хотите по-разному обрабатывать архивные теги? Условный тег is_tag() сможет помочь вам в этом. Просто поместите имя тега, Slug (краткий URL записи) или ID (или же массив из них) в качестве параметра условного тега is_tag() .
Допустимые параметры
У этого условного тега всего один параметр:
- $tag (тип ‘array/string’, необязательный): ID тега, имя, Slug или массив этих параметров. Значения по умолчанию нет.
21. Проверка записи на наличие короткого описания, заданного пользователем: has_excerpt()
Есть два типа кратких выдержек в записях WordPress: если вы пишите ее самостоятельно, это называется "пользовательской выдержкой", а если нет, то она генерируется автоматически (по умолчанию, это первые 55 слов записи). Условный тег has_excerpt() проверяет, задано ли пользователем короткое описание для выбранной записи.
Допустимые параметры
У этого условного тега всего один параметр:
- $post_id (тип ‘integer’, необязательный): ID записи. Значения по умолчанию: ID текущей записи.
Пример использования условного тега has_excerpt()
Предположим, что вы создаете тему и хотите отобразить существующие короткие описания, заданные пользователем, на стартовой странице сайта.
Вот как это сделать:
<?php
if ( has_excerpt() ) {
the_excerpt();
}
?>
22. Проверка, основной ли это запрос: is_main_query()
WordPress использует класс WP_Query для создания списка постов. Существует множество функций для использования в классеWP_Query, а is_main_query() одна из них. Этот условный тег определяет тип запроса: является ли он основным.
Допустимые параметры
Этот тег не использует параметров.
23. Проверка, имеет ли запись определенные теги: has_tag()
Иногда вам нужно проверить наличие тегов у записи, наличие которых будет влиять на то, какие действия к ней можно применить. Используйте условный тег has_tag() для проверки записи на наличие определенных вами тегов. (Заметьте, что можно искать более чем один тег).
Допустимые параметры
Этот условный тег может использовать два параметра:
- $tag (тип ‘array/string’, необязательный): Имя тега, ID, Slug или же массив данных. Значения по умолчанию нет;
- $post (тип ‘object’, необязательный): запись для проверки. Значения по умолчанию: текущая запись.
Пример использования условного тега has_tag()
Допустим, у вас есть значки для записей блога (например "НОВОЕ", "ЛУЧШЕЕ" или "УСТАРЕВШЕЕ"), которые вы собираетесь использовать с помощью соответствующих тегов, и вы хотите отображать рисунки внутри постов.
Вот что нужно сделать:
<?php
if ( has_tag( 'badge-new' ) ) {
echo '<div class="post-content badge-new">';
} else if ( has_tag( 'badge-featured' ) ) {
echo '<div class="post-content badge-featured">';
} else if ( has_tag( 'badge-obsolete' ) ) {
echo '<div class="post-content badge-obsolete">';
} else {
echo '<div class="post-content">';
}
// Содержимое записи.
echo '</div>';
?>
24. Проверка, установлена ли CMS: is_blog_installed()
Этот условный тег возвращает значение TRUE, если WordPress установлен. Я включил этот тег в содержимое статьи для общей информации, потому что технически его нельзя использовать для разработки плагинов или тем. Он может быть использован в каких-то особенных средствах для WordPress.
Допустимые параметры
Этот условный тег не использует параметров.
25. Проверяем, есть ли у пользователя права супер администратора: is_super_admin()
В мультисайтовой сети существует такое понятие, как супер администратор, который может настраивать все сайты конкретной сети. Чтобы определить наличие этих прав у пользователя (или же прав обычного администратора в обычных установках WordPress), вы можете использовать тег is_super_admin().
Допустимые параметры
У этого условного тега всего один параметр:
- $user_id (тип ‘integer’, необязательный): ID пользователя. (По умолчанию: Текущий пользователь)
Пример использования условного тега is_super_admin()
К примеру, вам не нравится стандартное приветствие, и вы хотите его изменить, а пользователям оно подходит, и менять его не нужно. В этом случае нужно решение, которое будет применено только для администраторов.
Вот оно:
<?php
// Источник кода: http://www.paulund.co.uk/change-the-wordpress-howdy-text
add_filter( 'admin_bar_menu', 'replace_howdy' );
function replace_howdy( $wp_admin_bar ) {
$my_account = $wp_admin_bar->get_node( 'my-account' );
$newtitle = __( 'Здравия желаю, босс!', 'translation-domain' );
$wp_admin_bar->add_node( array(
'id' => 'my-account',
'title' => $newtitle
) );
return $wp_admin_bar;
}
?>
26. Проверка на то, является ли страница "Страницей": is_page()
В WordPress "страница" – один из пяти встроенных типов страниц наряду с записями, ревизиями, вложениями и навигационными меню. И если вам нужно определить конкретную страницу, то вы можете использовать условный тег is_page().
Допустимые параметры
У этого условного тега всего один параметр:
- $page (тип ‘array/string’, необязательный): ID, заголовок, Slug страницы или массив данных. Значения по умолчанию нет.
В заключение
В этой статье мы рассмотрели очередную часть из 65 задокументированных условных тегов WordPress. В следующих статьях мы рассмотрим оставшиеся 39. Если у вас возникли вопросы или же вы хотите оставить комментарии — не стесняйтесь, смело пишите в форме ниже, а если статья понравилась, не забудьте ею поделиться!
До встречи в следующей части!