Поиск по имени тега и категории

Вопрос или проблема

Как мне вернуть все посты, соответствующие определенной таксономии, используя <?php get_search_form(); ?>

Например: если пользователь вводит запрос, который соответствует имени тега или категории, search.php вернет все посты с соответствующим тегом или которые попадают в соответствующую категорию. Я работаю с кастомным типом постов, и на данный момент get_search_form(); похоже, возвращает совпадения только на основе содержания и заголовка. Пожалуйста, помогите! Спасибо.

используйте эту функцию, вставив ее в файл function.php для фильтра cat=22, измените id категории на свой выбор

function my_search_form( $form ) { 

    $form = '<form role="search" method="get" id="searchform" action="' . home_url( "https://wordpress.stackexchange.com/" ) . '" >
    <div><label class="screen-reader-text" for="s">' . __('Поиск по:') . '</label>
    <input type="text" value="' . get_search_query() . '" name="s" id="s" />
   <input type="text" value="22" name="cat" id="scat" />
    <input type="submit" id="searchsubmit" value="'. esc_attr__('Поиск') .'" />
    </div>
    </form>';

    return $form;
}

add_filter( 'get_search_form', 'my_search_form' );

.

Ответ или решение

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

Шаг 1: Создание кастомной формы поиска

Предлагаю адаптировать форму поиска так, чтобы она также учитывала выбранные категории и тэги. Ниже представлен код, который следует добавить в файл functions.php вашей темы:

function my_search_form( $form ) {
    $form = '<form role="search" method="get" id="searchform" action="' . home_url( '/' ) . '">
                <div>
                    <label class="screen-reader-text" for="s">' . __('Поиск:') . '</label>
                    <input type="text" value="' . get_search_query() . '" name="s" id="s" />
                    <input type="text" value="" name="cat" id="scat" placeholder="ID категории" />
                    <input type="text" value="" name="tag" id="stag" placeholder="Тэг" />
                    <input type="submit" id="searchsubmit" value="'. esc_attr__('Поиск') .'" />
                </div>
              </form>';

    return $form;
}
add_filter( 'get_search_form', 'my_search_form' );

Шаг 2: Модификация запросов поиска

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

function custom_search_query( $query ) {
    if ( $query->is_search && ! is_admin() ) {
        // Извлекаем значение категории и тега
        $cat = sanitize_text_field( $_GET['cat'] );
        $tag = sanitize_text_field( $_GET['tag'] );

        if ( ! empty( $cat ) ) {
            $query->set( 'cat', $cat );
        }

        if ( ! empty( $tag ) ) {
            $query->set( 'tag', $tag );
        }
    }
}
add_action( 'pre_get_posts', 'custom_search_query' );

Шаг 3: Тестирование и отладка

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

Рекомендации по SEO

  1. Ключевые слова: Включите ключевые слова, соответствующие вашему контенту, как в заголовках, так и в описаниях.
  2. Мета-теги: Убедитесь, что у каждой страницы поиска установлены правильные мета-теги, а также учитывайте использование meta description для повышения привлекательности в результатах поиска.
  3. Оптимизация URL: Проверьте, что структура URL читабельна и содержит ключевые слова.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...