Я использую 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 );
Я думаю, что мне что-то не хватает, или у меня есть функция настройки, позволяющая также выделить отрывок. Было бы здорово, если бы у кого-то возникла идея.