Как добавить условную логику в вашу тему WordPress

Опубликовано: 2021-02-25

Создание веб-сайта с помощью WordPress обеспечивает большую гибкость с точки зрения дизайна и функциональности. И по мере того, как вы углубляетесь в разработку тем, вы обнаружите, что бывают случаи, когда вам нужно настроить таргетинг на определенную страницу, категорию или тип сообщения для чего-то особенного. Вот где условная логика может значительно облегчить вашу работу.

Условная логика — мощная функция языков программирования (в нашем случае — PHP). По сути, мы можем использовать код, чтобы проверить, существует ли определенное условие, а затем сделать что-то конкретное, если это условие выполнено. Простым примером этого может быть проверка того, находится ли пользователь в настоящее время на домашней странице нашего сайта. Используя условную логику, мы можем выбрать загрузку ползунка или другого специального контента в этой ситуации.

Что касается WordPress, в программное обеспечение встроено несколько полезных условных тегов, которые позволяют нам тестировать всевозможные сценарии. Они хорошо документированы и позволяют повысить уровень функциональности вашего сайта.

Сегодня мы рассмотрим несколько наиболее часто используемых условных тегов и то, как вы можете внедрить их на свой собственный сайт.

Примечание об использовании условных тегов

Условные теги — это фрагменты PHP-кода, которые должны быть включены в активную тему вашего сайта. В теме есть несколько мест, где вы можете использовать условную логику.

Если вы еще этого не сделали, рекомендуется ознакомиться с иерархией шаблонов WordPress, чтобы понять, как работают файлы тем.

И прежде чем вы попытаетесь внедрить новый код на работающем сайте, лучше сначала настроить среду разработки (промежуточную), чтобы протестировать все. Помните, что одно неверное движение с PHP может дать вашему сайту ужасный «белый экран смерти». Поэтому будьте очень осторожны при тестировании, прежде чем работать над работающим сайтом.

дома()

Это вызывает большое замешательство среди разработчиков. Глядя на тег, вы предполагаете, что is_home() будет использоваться для проверки домашней страницы вашего сайта. Это не так.

На самом деле он ищет страницу, назначенную вашей страницей сообщений, которая устанавливается в «Настройки»> «Чтение» на панели управления WordPress. По умолчанию WordPress использует вашу домашнюю страницу для списка сообщений, но большинство сайтов, как правило, вместо этого используют статическую домашнюю страницу.

Так, например, если вы назначили страницу с именем «Блог» в качестве страницы сообщений, это то, что is_home() будет искать.

 <?php // If this the Posts page, display a message. if ( is_home() ): echo '<h2>Thanks for visiting our blog!</h2>'; endif; ?>

is_front_page()

И наоборот, is_front_page() ищет любую страницу, установленную в качестве домашней для вашего сайта, независимо от того, статична она или нет. По общему признанию, это не самая очевидная вещь в мире, когда вы учитесь создавать свои собственные темы. Но знать, какой тег использовать, жизненно важно.

Что хорошо в этом конкретном теге, так это то, что даже если вы позже назначите другую страницу в качестве домашней страницы, вы все равно будете ориентироваться на нужное место. Существуют более явные способы таргетинга на страницы, но этот защитит вас в случае изменения.

 <?php // If this is the home page, show a special message. if ( is_front_page() ) { ?> <h1>Welcome</h1> <?php // Otherwise, show the page title. } else { ?> <?php the_title( '<h1 class="entry-title">', '</h1>' ); ?> <?php } ?>

is_single() и is_page()

Каждый из этих тегов выполняет двойную функцию. is_single() , является ли текущий URL публикацией. Это может быть стандартная запись в блоге, вложение или запись произвольного типа.

Точно так же is_page() вернет true, если текущий URL-адрес является страницей. По умолчанию оба тега нацелены на любой контент, относящийся к странице или публикации. Это общий поток среди многих условных тегов.

 <?php // Target all posts. if ( is_single() ): echo 'You are on a single post.'; endif; // Target all pages. if ( is_page() ): echo 'This is a page'; endif; ?>

Но вы также можете использовать эти теги для таргетинга на конкретную публикацию или страницу, добавив идентификатор или ярлык.

 <?php // Target About Us if ( is_page( 'about-us' ) ): ?> <a href="#"></a> <?php endif; ?>

Использование массива позволит вам ориентироваться на несколько фрагментов контента.

 <?php // Target About Us and Contact Us pages. if ( is_page( array('about-us', 'contact-us') ) ): ?> <a href="#"></a> <?php endif; ?>

is_tax() и has_term()

Таксономии играют большую роль в организации контента на сайте. Двумя наиболее распространенными являются категории и теги, которые имеют свои собственные условные теги. Но WordPress также позволяет нам создавать собственные таксономии.

Например, если ваш сайт содержит музыкальные обзоры, у вас может быть таксономия под названием «Жанр». Оттуда вы могли бы перечислить определенные жанры музыки в этой таксономии, такие как «Рок», «Хип-хоп» и «Джаз».

is_tax() нацелен на страницу архива таксономии. Продолжая наш пример с музыкальным обзором, этот тег будет срабатывать (вступать в силу), когда мы находимся на странице архива для каждого из конкретных жанров.

 <?php // Display a message on our Genre archive pages. if (is_tax('genre','rock','hip-hop','jazz') ): echo '<h2>This is a genre archive. Enjoy!</h2>'; endif; ?>

has_term() используется для нацеливания на текущую запись в зависимости от того, к какой таксономии она принадлежит. Это полезно, если, например, мы хотим добавить специальную графику для сообщений в каждом музыкальном жанре на нашем сайте.

 <?php // Show an image for the Rock genre. if (has_term('rock','genre') ): ?> <?php endif; ?>

is_page_template()

После того, как вы ознакомитесь с иерархией шаблонов темы, вы можете захотеть создать свои собственные настраиваемые шаблоны страниц. is_page_template() позволяет указать текущий используемый шаблон страницы (независимо от того, является ли он пользовательским). Вы можете либо проверить, используется ли вообще какой-либо шаблон страницы, либо найти конкретный.

Однако вы должны быть осторожны при поиске определенного шаблона страницы. Поскольку этот тег проверяет наличие имени файла, условие может перестать работать, если имя этого шаблона будет изменено. Вам придется обновить свой код, чтобы отразить любые изменения имени файла.

 <?php // Add a search form to the Services page template. if (is_page_template('services.php') ): ?> <?php get_search_form(); ?> <?php endif; ?>

Все условия выполнены

Хотя это было просто краткое введение в то, как можно использовать условную логику, мы надеемся, что оно разожжет ваш аппетит к дальнейшему изучению.

Как только вы освоите условные выражения, вы сможете настроить свой сайт таким образом, который в противном случае был бы почти невозможен.

Они могут дать вам точный контроль над внешним видом и макетом вашей темы, в то же время используя все преимущества использования CMS.