Ich verwende WP Abfrage und die Ergebnisse, die bei der Verwendung des Suchbegriffs angezeigt werden, funktionieren nicht wie gewünscht. Die Suche nach "art" gibt beispielsweise auch Ergebnisse für Wörter zurück, die "art" enthalten, z. B. "part". Wie kann ich das vermeiden? und einfach die Ergebnisse für 'art' zurückgeben, die das exakte Wort 'art' enthalten.
Dies ist eine schwierige Frage, da es zwei Möglichkeiten gibt, Ihre Frage zu interpretieren, indem Sie genau angeben:
Zum Glück können Sie dies auch tun, aber Methode 1 ist bei weitem einfacher. Fügen Sie eines dieser Beispiele zu Ihrer functions.php -Datei hinzu -
Methode 1
add_action('pre_get_posts', 'my_make_search_exact', 10);
function my_make_search_exact($query){
if(!is_admin() && $query->is_main_query() && $query->is_search) :
$query->set('exact', true);
endif;
}
Die Funktion my_make_search_exact()
wird bei jeder Abfrage mit dem Aktions-Hook pre_get_posts
aufgerufen.
Um sicherzustellen, dass wir uns nicht mit der Abfrage anlegen, wenn dies nicht erforderlich ist, überprüfen wir innerhalb der Funktion, dass der Administrationsbereich NICHT angezeigt wird, dass wir die Hauptabfrage erstellen und dass wir eine Suche durchführen.
Methode 2
add_filter('posts_search', 'my_search_is_exact', 20, 2);
function my_search_is_exact($search, $wp_query){
global $wpdb;
if(empty($search))
return $search;
$q = $wp_query->query_vars;
$n = !empty($q['exact']) ? '' : '%';
$search = $searchand = '';
foreach((array)$q['search_terms'] as $term) :
$term = esc_sql(like_escape($term));
$search.= "{$searchand}($wpdb->posts.post_title REGEXP '[[:<:]]{$term}[[:>:]]') OR ($wpdb->posts.post_content REGEXP '[[:<:]]{$term}[[:>:]]')";
$searchand = ' AND ';
endforeach;
if(!empty($search)) :
$search = " AND ({$search}) ";
if(!is_user_logged_in())
$search .= " AND ($wpdb->posts.post_password = '') ";
endif;
return $search;
}
Dank an tinyGod für diese Antwort - http://tinygod.pt/make-wordpress-search-exact/
Ich denke, jemand anderes hat dies schon einmal beantwortet: Überprüfe diese Antwort , von @Sunyatasattva
Anscheinend unterstützt WP_Query jedoch einige zusätzliche Suchparameter:
's' => $ s, // (string) - Übergibt die Abfragezeichenfolgenvariable einer Suche.
'exact' => true, // (bool) - Flag, damit nur ganze Titel/Posts gefunden werden. - Standardwert ist false.
'sentence' => true, // (bool) - Flag, mit dem eine Phrasensuche durchgeführt wird. - Standardwert ist false.
Mehr unter: https://Gist.github.com/luetkemj/2023628
Ich hoffe es hilft,