Как выводить кастомные типы записей в поиске

15.09.2021

По умолчанию WordPress не включает пользовательские типы записей в результаты поиска. Из-за этого вам нужно самостоятельно добавить кастомные посты в цикл.

Вы добавите следующие фрагменты в файл functions.php вашей темы или, если хотите, в сборку настраиваемого плагина только для вашего собственного веб-сайта.

Добавление всех кастомных типов записей CPTUI в результаты поиска.

function my_cptui_add_post_type_to_search($query) {
    if (is_admin()) {
        return;
    }

    if ($query->is_search()) {
        $cptui_post_types = cptui_get_post_type_slugs();
        $query->set(
            'post_type',
            array_merge(
                array('post'), // May also want to add the "page" post type.
                $cptui_post_types
            )
        );
    }
}
add_filter('pre_get_posts', 'my_cptui_add_post_type_to_search');

В этом коде мы проверяем, выполняет ли WordPress поиск. Если это так, то мы извлекаем массив всех слагов кастомных постов на основе CPTUI и объединяем его в массив с типом поста 'post'. Создав этот массив, мы передаем всё это в параметры запроса, чтобы WordPress знал, что нужно выполнять поиск по всем этим параметрам.

Добавление в результаты поиска только некоторых типы кастомных записей CPTUI.

function my_cptui_add_post_type_to_search($query) {
    if ($query->is_search()) {
        // Replace these slugs with the post types you want to include.
        $cptui_post_types = array('my_post_type', 'my_other_post_type');

        $query->set(
            'post_type',
            array_merge(
                array('post'),
                $cptui_post_types
            )
        );
    }
}
add_filter('pre_get_posts', 'my_cptui_add_post_type_to_search');

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

Информация прямиком из туториала.

Рекомендую к прочтению:

Оставить комментарий