@Aleksergio

Как добавить в результаты поиска страницы, данные на которых выведены через WP_Query?

Вывод данных на страницах сайта осуществлен в большей части через шорткоды. Некоторые шорткоды работают с метками. Метки — это таксономии, на основе которых выводятся определенные кастомные посты
Т.е. Выполняется запрос, например
//Шорткод [abs_test letter-tag="На главную"]
add_shortcode('abs_test', 'function_45235_test');
function function_45235_test($atts)
{
    if (isset($atts['letter-tag']) && !empty($atts['letter-tag'])) {
        $chosen_reviews_from_letters_tag = $atts['letter-tag'];
    } else {
        $chosen_reviews_from_letters_tag = '';
    }
    $chosen_reviews_from_letters_args = [
        'post_type' => 'pvdn_reviews_mails',  //Произвольный тип записи
        'pvdn_reviews_mails_tags' => $chosen_reviews_from_letters_tag,  //Таксономия меток для поста типа pvdn_reviews_mails
        'post_status' => 'publish',
    ];
    $chosen_reviews_from_letters_array = new WP_Query($chosen_reviews_from_letters_args);
    while ($chosen_reviews_from_letters_array->have_posts()) {
        $chosen_reviews_from_letters_array->the_post();
        echo get_the_title();
    }
    wp_reset_postdata();
}

Есть также форма поиска на сайте. К сожалению, в поисковую выдачу не попадают страницы, на которых данные выведены через этот шорткод. И даже если упростить задачу (то есть без шоткода),и вставить указанный выше WP_Query в страницу напрямую (например в page.php), поиск всё равно не выдаст результатов. Есть ли какие варианты решения этой проблемы?
  • Вопрос задан
  • 9 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Aricus
Изменить страницу поиска search.php, добавив до или после вывода результатов поиска точно такой же вывод, но по вашему запросу.
Ответ написан
HeadOnFire
@HeadOnFire Куратор тега WordPress
PHP, Laravel & WordPress Evangelist
Вы неправильно понимаете механизм поиска. По умолчанию поиск ищет по таблице wp_posts в полях post_title и post_content. Шорткоды ваши в post_content хранятся в оригинальном виде, а не результирующем тексте (выводе шорткода). По той же причине не попадают в поиск результаты WP_Query в шаблоне страницы - потому что эти данные не хранятся в post_content.

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
04 апр. 2020, в 22:57
5000 руб./за проект
04 апр. 2020, в 22:56
3000 руб./за проект
04 апр. 2020, в 22:39
15000 руб./за проект