Выделить результаты поиска по индивидуальному запросу yoast - PullRequest
0 голосов
/ 19 июня 2020

Я использую Genesis с WordPress, и я создал некоторые функции с помощью других на inte rnet для создания пользовательских результатов поиска в WordPress. С помощью этих функций результаты поиска имеют мета-заголовок и описание из плагина Yoast SEO.

Я также сделал функцию для выделения ключевых слов, которые кто-то использовал в результатах поиска, но она применяется только к заголовку и не к отрывку, который создан с описанием Yoast Meta.

Это функция для выделения ключевых слов в результатах:

function wps_highlight_results($text){
     if(is_search()){
     $sr = get_query_var('s');
     $keys = explode(" ",$sr);
     $text = preg_replace('/('.implode('|', $keys) .')/iu', '<strong class="search-excerpt">'.$sr.'</strong>', $text);
     }
     return $text;
}
add_filter('the_excerpt', 'wps_highlight_results');
add_filter('the_title', 'wps_highlight_results');

Я уже пытался использовать этот фильтр, чтобы выделить работу в отрывке:

add_filter('wpseo_metadesc', 'wps_highlight_results');

Но это тоже не сработало.

Вот функции, которые я обнаружил для использования Yoast в результатах поиска:

function be_search_entry_title() {
    $title = '';
    if( function_exists( 'wpseo_replace_vars' ) ) {
        global $post;
        $title = get_post_meta( get_the_ID(), '_yoast_wpseo_title', true );
        $title = wpseo_replace_vars( $title, $post );
    }
    if( empty( $title ) ) {
        $title = get_the_title();
    }
    return $title;
}

/**
 * Entry excerpt in site search
 * @link https://www.billerickson.net/yoast-seo-title-and-description-in-site-search-results/
 *
 */
function be_search_entry_excerpt() {
    $excerpt = '';
    if( function_exists( 'wpseo_replace_vars' ) ) {
        global $post;
        $excerpt = get_post_meta( get_the_ID(), '_yoast_wpseo_metadesc', true );
        $excerpt = wpseo_replace_vars( $excerpt, $post );

    }
    if( empty( $excerpt ) ) {
        $excerpt = get_the_excerpt();
    }
    return $excerpt;
}

function be_genesis_search_entry_title( $title ) {
    if( is_search() )
        $title = be_search_entry_title();
    return $title;
}
add_filter( 'genesis_post_title_text', 'be_genesis_search_entry_title');

/**
 * Genesis, use search entry excerpt
 * @link https://www.billerickson.net/yoast-seo-title-and-description-in-site-search-results/
 *
 */
function be_genesis_search_entry_excerpt() {
    if( ! is_search() )
        return;

    remove_action( 'genesis_entry_content', 'genesis_do_post_content' );
    echo wpautop( be_search_entry_excerpt() );
}
add_action( 'genesis_entry_content', 'be_genesis_search_entry_excerpt', 9 );

Я думаю, что мне что-то не хватает, или у меня есть функция настройки, позволяющая также выделить отрывок. Было бы здорово, если бы у кого-то возникла идея.

...