Code snippets ultimate member

Als je wilt zoeken binnen WordPress users, of in Ultimate Member members, (wat op hetzelfde neerkomst), zou je denken dat dit makkelijk gedaan kan worden met een meta_query, of met de user zoek functionaliteit dat zit ingebouwd in WordPress.

Dat is niet het geval! Terwijl ik bezig was hiervoor code te schrijven kwam ik erachter dat er geen gebruikers gevonden worden op username. Even wat verder zoekende kwam ik er achter dat de query die WordPress genereert alleen in de wp_usermeta tabel zoekt. En de username is onderdeel van de wp_users tabel.

Aan de andere kant, als je zoekt met de “search” query, zal WordPress alleen zoeken in de wp_users tabel, dus zal je geen users vinden op voornaam of achternaam.

Om dit op te lossen, moet je de twee combineren. In het voorbeeld hieronder bevat de totalusers variabele de lijst users waarbij $str voorkomt in ofwel username, user_nicename, user_email, firstname, of lastname. Je kan dit naar wens uitbreiden natuurlijk.

//search usertable
$wp_user_query = new WP_User_Query(
  array(
    'search' => "*{$str}*",
    'search_columns' => array(
    'user_login',
    'user_nicename',
    'user_email',
  ),

) );
 $users = $wp_user_query->get_results();

//search usermeta
 $wp_user_query2 = new WP_User_Query(
  array(
    'meta_query' => array(
    'relation' => 'OR',
      array(
        'key' => 'first_name',
        'value' => $str,
        'compare' => 'LIKE'
      ),
    array(
        'key' => 'last_name',
        'value' => $str,
        'compare' => 'LIKE'
      )
    )
  )
 );

$users2 = $wp_user_query2->get_results();

$totalusers_dup = array_merge($users,$users2);

$totalusers = array_unique($totalusers_dup, SORT_REGULAR);

Related Articles

Laat een reactie achter