Как показать только релевантный совпадающий текст внутри отрывка - PullRequest
0 голосов
/ 05 мая 2020

Мои отрывки автоматически генерируются из первых 30 или около того слов из содержания сообщения. Иногда совпадающие условия поиска находятся в этом диапазоне или за его пределами. Я пытаюсь вернуть и выделить только часть текста, содержащего результаты. Поведение по умолчанию позволяет выделить, только если результаты поиска находятся в пределах этих первых 30 слов. Если они находятся вне скобок, я вижу только не относящийся к делу текст. Как я могу выделить в отрывке только соответствующую часть? Результаты поиска работают отлично и, следовательно, возвращают требуемые результаты поиска. У меня только проблема с отображением соответствующих результатов сопоставления внутри выдержки. Я пробовал бесчисленное количество раз, но полагаю, что на данный момент это выходит за рамки моих возможностей.

Вот код, который у меня есть:

function search_excerpt_highlight() {
    $excerpt = the_excerpt();
    $keys = implode('|', explode(' ', get_search_query()));
    $excerpt = preg_replace('/(' . $keys .')/iu', '<strong class="search-highlight">\0</strong>', $excerpt);

    echo '<p>' . $excerpt . '</p>';
}

add_action('pre_get_posts', 'search_exact_by_phrase', 1);
function search_exact_by_phrase($query){

    if(!is_admin() && $query->is_main_query() && $query->is_search) :
        $query->set('sentence', true);
    endif;

}

У меня это внутренний поиск. php

search_excerpt_highlight();

И мой стиль. css выглядит так:

strong.search-highlight {
  background-color: #fdc058;
  font-weight: bold;
}

Пожалуйста, помогите, я застрял на этом этапе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...