Wildcard in WP_User_Query()

Für nutzerbezogene Daten steht in WordPress die Klasse WP_User_Query() zur Verfügung. Üblicherweise gibt man dort einen Schlüssel mit und bekommt die entsprechenden Werte zum User zurück. Durch ein Entwicklungsthema ist mir eine Besonderheit in der Query aufgefallen, die diesen kleinen Beitrag als Folge hat. Die Klasse erlaubt das Ergänzen von * als Wildcard. Innerhalb der Klasse wird dieser Stern dann für die SQL Abfrage ersetzt (%).

Im Codex findet man beispielsweise folgendes einfaches Beispiel zur User-Abfrage.


$user_query = new WP_User_Query( array( 'search' => 'Rami' ) );

Will man vor oder nach diesem String "Rami" per Wildcard schauen, was es weiter gibt, oder flexibler suchen, dann ist lediglich das Ergänzen von * notwendig. Dazu finde ich aktuell nichts im Codex, so dass der Hinweis hier ggf. hilfreich ist.

Im Core wird dies betrachtet:


// @see wp-includes/user.php#L599
if ( $search ) {
        $leading_wild = ( ltrim($search, '*') != $search );
        $trailing_wild = ( rtrim($search, '*') != $search );
        if ( $leading_wild && $trailing_wild )
                $wild = 'both';
        elseif ( $leading_wild )
                $wild = 'leading';
        elseif ( $trailing_wild )
                $wild = 'trailing';
        else
                $wild = false;
        if ( $wild )
                $search = trim($search, '*');

Damit kann also vor oder nach dem String ein Wildcard mitgegeben werden.


$user_query = new WP_User_Query( array( 'search' => '*Rami*' ) ); //%Rami%

$user_query = new WP_User_Query( array( 'search' => 'Rami*' ) ); //Rami%

Zum Ende nochmal der Hinweis, die Wildcard ist nur am Anfang oder Ende des Suchstrings möglich, nicht innerhalb des Strings.

Comments are closed.