Простой способ поиска только по произвольным типам записей

28 сент. 2011 г., 20:03:30
Просмотры: 36.3K
Голосов: 6

Я пытаюсь найти способ ограничить мою текущую строку поиска так, чтобы она искала только в пределах моего произвольного типа записей 'events'.

Я не хочу, чтобы поиск индексировал какие-либо другие типы записей, только 'events'.

Вот строка поиска:

<form id="searchform" action="http://localhost:8888/ltc" method="get">
        <input class="inlineSearch" type="text" name="s" value="Введите ключевое слово" onblur="if (this.value == '') {this.value = 'Введите ключевое слово';}" onfocus="if (this.value == 'Введите ключевое слово') {this.value = '';}" />
        <input class="inlineSubmit" id="searchsubmit" type="submit" alt="Поиск" value="Поиск" />
    </form>

И файл search.php:

<?php if ( have_posts() ) : ?>
            <h1><?php printf( __( 'Результаты поиска для: %s', 'twentyten' ), '' . get_search_query() . '' ); ?></h1>
            <?php
            /* Запускаем цикл для поиска, чтобы вывести результаты.
             * Если вы хотите переопределить это в дочерней теме, то включите файл
             * с названием loop-search.php, и он будет использован вместо этого.
             */
             get_template_part( 'loop', 'search' );
            ?>

(Я еще не редактировал стандартную страницу search.php, так как сначала хочу правильно настроить индексацию)

Спасибо

2
Комментарии

для нескольких типов записей: <input type="hidden" name="post_type[]" value="stories"/> <input type="hidden" name="post_type[]" value="products"/> https://wordpress.stackexchange.com/questions/12723/searching-multiple-custom-post-types-and-pages

Phil Sav Phil Sav
26 мар. 2018 г. 08:45:48

В дополнение к ответу Hansy ознакомьтесь с моей записью здесь: https://wordpress.stackexchange.com/questions/26372/search-only-pages-if-on-page/29060#29060 о использовании радио-кнопок для предоставления пользователям возможности выбора, что они хотят искать.

Brian Fegter Brian Fegter
28 сент. 2011 г. 21:07:01
Все ответы на вопрос 3
1
13

Для поиска по пользовательскому типу записи вы можете добавить к запросу &post_type=events. Чтобы реализовать это, просто отредактируйте вашу форму следующим образом:

<form id="searchform" action="http://localhost:8888/ltc" method="get">
        <input class="inlineSearch" type="text" name="s" value="Введите ключевое слово" onblur="if (this.value == '') {this.value = 'Введите ключевое слово';}" onfocus="if (this.value == 'Введите ключевое слово') {this.value = '';}" />
        <input type="hidden" name="post_type" value="events" />
        <input class="inlineSubmit" id="searchsubmit" type="submit" alt="Поиск" value="Поиск" />
</form>

Вы можете сделать это для любого типа записи (он должен существовать, иначе будет проигнорирован), и это будет работать корректно.

28 сент. 2011 г. 20:29:11
Комментарии

Как это будет работать для нескольких post_types?

kneidels kneidels
29 февр. 2016 г. 13:37:31
0

В моем случае функциональность поиска работала идеально. Мне просто нужно было отфильтровать запрос, чтобы искать только записи типа Learndash Courses. Вот что я сделал:

// Фильтрует поисковый запрос, чтобы включать только тип записи 'sfwd-courses'
function fn_search_courses_only($query) {
    if( $query->is_search && ! is_admin() ) {
        $query->set( 'post_type', 'sfwd-courses' );
    }
}
add_action( 'pre_get_posts', 'fn_search_courses_only' );
18 нояб. 2024 г. 09:07:10
0

Чтобы выполнить поиск по пользовательскому типу записи, вам просто нужно указать тип записи в разделе значения.
Пример: Мой пользовательский тип записи называется "blogpst". Теперь посмотрите, что я сделал во втором поле ввода:

<input type="hidden" name="post_type" value="blogpst" />

Видите, что я сделал? Я просто указал тип записи в разделе значения.

17 февр. 2019 г. 18:58:08