WP_Query sucht nach ganzen Wörtern

Ich suche nach naturwissenschaftlichen Begriffen. Hier ist, was ich meine Anfrage zu tun habe. Wenn jemand “bio” sucht, sollte er keine Ergebnisse für die Begriffe “Biologie” und “Biowissenschaften” erhalten. Ich brauche die Abfrage, um Ergebnisse für das ganze Wort zurückzugeben. Irgendwelche Vorschläge werden geschätzt. Vielen Dank!

Hier ist mein Code:

$queryArgs = array( 'post_type' => 'faculty', 'posts_per_page' => -1, 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'proposed_keywords', // name of custom field 'value' => $keyword, // matches exaclty "123", not just 123. This prevents a match for "1234" 'compare' => 'LIKE' ) ) ); 

Solutions Collecting From Web of "WP_Query sucht nach ganzen Wörtern"

Du brauchst reguläre Ausdrücke, um das zu erreichen.

Zuallererst müssen Sie 'LIKE' in 'RLIKE' (oder 'REGEXP' ) 'REGEXP' .

Zweitens, ersetzen Sie $keyword in 'value' durch eine Regex, die Wortgrenzen beinhaltet.

Wie so:

  $queryArgs = array( 'post_type' => 'faculty', 'posts_per_page' => -1, 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'proposed_keywords', // name of custom field 'value' => "[[:<: ]]$keyword[[:>:]]", // matches exaclty "123", not just 123. This prevents a match for "1234" 'compare' => 'RLIKE' ) ) ); 

Die obigen 500’s über mich (wp-engine) also habe ich stattdessen benutzt:

 'value' => '[[:<: ]]'.$keyword.'[[:>:]]', 'compare' => 'REGEXP' 

Was gut funktioniert 🙂