WP_Query meta_query, wobei der Metawert im Leerzeichen endet

Ich führe eine Standard-WP_Query auf einer Immobilien-Website, und ich möchte alle Eigenschaften finden, die eine Postleitzahl haben, die mit “SC1” beginnt. In der Meta-Abfrage funktioniert ein normales LIKE für die Postleitzahl, aber es gibt auch Eigenschaften mit der Postleitzahl SC13 zurück, was ich nicht möchte.

Als Ergebnis habe ich meine Meta-Abfrage wie folgt geändert:

array( 'key' => '_address_postcode', 'value' => 'SC1 ', // Notice the addition of the space 'compare' => 'LIKE' ) 

Aber .. es funktioniert nicht. Ich habe tiefer gegraben und es scheint, dass WordPress die Werte trimmt:

https://github.com/WordPress/WordPress/blob/af69f4ab1a0b44594b1f231c183f7a533575a893/wp-includes/class-wp-meta-query.php#L597

Irgendeine Idee, wie ich nach Meta-Werten suchen kann, die speziell am Ende einen Platz haben? Ich dachte daran, so etwas zu tun:

 array( 'key' => '_address_postcode', 'value' => 'SC1 %',// Add a space then wildcard 'compare' => 'LIKE' ) 

… aber das geht nicht. Kann mir jemand einen Weg überlegen, um das zu umgehen: -S

Solutions Collecting From Web of "WP_Query meta_query, wobei der Metawert im Leerzeichen endet"

Beachten Sie, wie Ihre Struktur ist, aber hier ist eine Möglichkeit, RLIKE Vergleich und eine Leerzeichen- Zeichenklasse zu verwenden :

 array( 'key' => '_address_postcode', 'value' => '^SC1[[:space:]]', // Starts with 'SC1 ' 'compare' => 'RLIKE' ) 

Vielleicht solltest du darüber nachdenken, die Meta-Werte anzupassen, wie von @cybmeta vorgeschlagen?

Aber beachten Sie, dass Meta-Abfragen langsam sein können, so dass Alternativen hier besser sein könnten (zB als benutzerdefinierte Taxonomie?).

Sie können   in Ihrer Meta-Abfrage.

 array( 'key' => '_address_postcode', 'value' => 'SC1 ', 'compare' => 'RLIKE' )