Функция is_search()
в WordPress является важным инструментом для проверки того, находится ли текущая страница на странице результатов поиска. В этой статье мы подробно рассмотрим, как использовать is_search()
, и приведем несколько примеров, чтобы помочь вам максимально эффективно применять эту функцию на вашем сайте.
is_search()
is_search()
— это встроенная функция WordPress, которая возвращает true
, если текущая страница является страницей результатов поиска, и false
в противном случае. Эта функция полезна для настройки и изменения поведения вашего сайта в зависимости от того, выполняется ли поиск.
Пример использования is_search()
Пример 1: Изменение шаблона страницы поиска
Одним из самых распространенных случаев использования is_search()
является изменение шаблона страницы поиска. То есть у вас есть index.php
который используется для списка постов, вы можете добавить проверку если это не страница поиска, и подгрузить специфическую HTML разметку:
if ( is_search() ) {
get_template_part( 'template-parts/content', 'search' );
} else {
get_template_part( 'template-parts/content', 'default' );
}
Обратите внимание, что в WordPress есть возможность задать отдельный шаблон страницы для этих целей, то есть для результатов поиска. Это файл search.php
.
<?php
get_header();
?>
<?php if ( have_posts() ) : ?>
<header class="page-header">
<h1 class="page-title">
<?php printf( esc_html__( 'Search Results for: %s', 'your-theme-textdomain' ), '<span>' . get_search_query() . '</span>' ); ?>
</h1>
</header>
<?php
while ( have_posts() ) :
the_post();
// Выводим контент для каждого поста
get_template_part( 'template-parts/content', 'search' );
endwhile;
// Пагинация
the_posts_navigation();
else :
// Если ничего не найдено
get_template_part( 'template-parts/content', 'none' );
endif;
?>
<?php
get_sidebar();
get_footer();
?>
Пример 2: Изменение количества постов на странице поиска
Вы можете использовать is_search()
в комбинации с хуком pre_get_posts
, чтобы изменить количество постов, отображаемых на странице результатов поиска.
function modify_search_posts_per_page( $query ) {
if ( $query->is_search() && $query->is_main_query() ) {
$query->set( 'posts_per_page', 20 );
}
}
add_action( 'pre_get_posts', 'modify_search_posts_per_page' );
Пример 3: Добавление метатегов на страницу поиска
Вы можете добавить метатеги или другие элементы HTML, специфичные для страницы поиска, используя is_search()
. Этот код можно вставить в header.php вашей темы внутри тэга HEAD.
if ( is_search() ) {
echo '<meta name="robots" content="noindex, follow">';
}
Пример выше можно решить при помощи хука, чтобы не делать врезку в файл header.php а просто вставив его в functions.php
вашей темы:
function add_meta_tags_for_search() {
if ( is_search() ) {
echo '<meta name="robots" content="noindex, follow">';
}
}
add_action( 'wp_head', 'add_meta_tags_for_search' );
Заключение
Функция is_search()
в WordPress предоставляет вам гибкость для настройки страницы с результатами поиска на вашем сайте. Используя приведенные примеры, вы можете легко адаптировать свой сайт под разные нужды.