Поддержка Проблемы и решения Результаты поиска со страниц с 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), поиск всё равно не выдаст результатов. Есть ли какие варианты решения этой проблемы?

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Так у вас контент не выводится, что показать то, а пойск работает по контенту. Возможно я не прав.

    Автор alekspashkovskiy

    (@alekspashkovskiy)

    Правы. И, вроде, кроме контента он ищет и по title страниц (могу ошибаться).
    Могу добавить, что можно кое-каким образом изощриться и даже добавить к стандартному поиску еще и поиск по метаданным поста.
    Но вопрос, есть ли возможность выводить в результаты поиска данные, выводимые WP_Query на страницах, всё так же остается открытым.

    Модератор Yuri

    (@yube)

    есть ли возможность выводить в результаты поиска данные, выводимые WP_Query на страницах

    По-простому — нет. Поиск WP ищет текст в полях таблиц БД, а то, что вставляется через WP_Query в старницы, лежит не там, где ищет поиск. И даже если заставить поиск искать и по записям с post_type=pvdn_reviews_mails, он не сможет связать найденное со страницей.

    По-сложному, полностью переделав sql запрос поиска, наверно, можно. Либо делать совсем альтернативный поиск, который будет искать не по исходному коду, а по результирующему, полученному после обработки шорткодов и прочей лабуды, формирующей страницы.

    function SearchFilter($query) {
        if(!is_admin()){
         if ($query->is_search) {
          $query->set('post_type', 'post');
         }
        }
     return $query;
    }
    add_filter('pre_get_posts','SearchFilter');

    для наглядности, как обработать пойск

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Результаты поиска со страниц с WP_Query» закрыта для новых ответов.