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

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

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

Похожие вопросы