Результаты SearchWP с тегами html - PullRequest
0 голосов
/ 19 февраля 2020

Я использую плагин searchWP на моем WordPress сайте, но в результатах поиска по ключевому слову отображаются теги html в описании. (см. рисунок)

text

Можно ли использовать фильтр для удаления этих тегов из списка, но при этом отображать текст без тегов?

Теги находятся внутри редактора WordPress Wysiwyg.

Обновление.

Форма поиска использует vue. Поэтому, если есть возможность обрезать теги html из результатов, используя vue, я бы предпочел это.

1 Ответ

0 голосов
/ 19 февраля 2020

Я не проверен, попробуйте это.

function wpse159789_posts_search( $search, $query ) {
    global $wpdb;
    if ( ! preg_match( '/' . $wpdb->posts . '\.post_content LIKE \'%(.+)%\'/', $search, $matches, PREG_OFFSET_CAPTURE ) ) {
        return $search;
    }
    $search_str = stripslashes( $matches[1][0] );
    // Cater for closed angle pairs embedded in the search string.
    for ( $i = 0, $len = mb_strlen( $search_str ); $i < $len; $i++ ) {
        $q_searches[] = '(<[^>]*>)?' . preg_quote( mb_substr( $search_str, $i, 1 ) );
    }
    $q_search = implode( '', $q_searches );
    $regexs[] = '^[^<]*' . $q_search; // Before any angle bracket.
    $regexs[] = '(<[^>]*>)[^<]*' . $q_search; // After any closed angle bracket pair.
    array_unshift( $regexs, implode( ' OR ', array_fill( 0, count( $regexs ), $wpdb->posts . '.post_content RLIKE %s' ) ) );
    $search_replace = call_user_func_array( array( $wpdb, 'prepare' ), $regexs );
    $search = substr( $search, 0, $matches[0][1] ) . $search_replace . substr( $search, $matches[0][1] + strlen( $matches[0][0] ) );
    return $search;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...