meta query della tabella usermeta
-
Buonasera,
ho la necessità di recuperare l’id utente conoscendo nome e cognome inserito nella key di woocommerce “billing_company”.
Siccome non so se nel meta value c’è scritto prima il nome e poi il cognome o viceversa, ho creato la seguente funzione:function GetUserIdEmail($billing_company) { $nome_pulito = trim($billing_company); $nominativo = explode(" ",$nome_pulito); $args = [ 'meta_query' => [ 'relation' => 'AND', [ 'key' => 'billing_company', 'value' => $nominativo[1], 'compare' => 'LIKE' ], [ 'key' => 'billing_company', 'value' => $nominativo[0], 'compare' => 'LIKE' ], ], ]; $utente = get_users($args); return $utente[0]->ID; }
Funziona! … però questa va bene se c’è un cognome e un nome (es. Mario Rossi). Se il soggetto ha più di un nome (es. Mario Antonio Rossi) o ha un nominativo ancora più complicato, la funzione non va più bene. Cosi l’ho trasformata:
function GetUserIdEmail($billing_company) { $nome_pulito = trim($billing_company); $nominativo = explode(" ",$nome_pulito); $str = array(); if ( count( $nominativo ) > 1 ) { $args['relation'] = 'AND'; foreach($nominativo as $tag) { $args[] = array( 'key' => 'billing_company', 'value' => $tag, 'compare' => 'LIKE' ); } } else { $args = array( 'key' => 'billing_company', 'value' => $nome_pulito); } $utente = get_users($args); return $utente[0]->ID; }
stampando l’array si legge così:
Array ( [relation] => AND [0] => Array ( [key] => billing_company [value] => Mario [compare] => LIKE ) [1] => Array ( [key] => billing_company [value] => Rossi [compare] => LIKE ) )
ottengo un risultato, ma è un risultato sbagliato.
Come mai? cosa sbaglio?Ringrazio anticipatamente ogni suggerimento.
Saluti,
Renato- Questo topic è stato modificato 2 anni fa da guardiano78.
- Questo topic è stato modificato 2 anni fa da guardiano78.
- Questo topic è stato modificato 2 anni fa da guardiano78.
-
buongiorno,
ho trovato il problema … dimenticavo di aggiungere [‘meta_query’];
Scrivo la funzione definitiva nel caso dovesse servire a qualcuno.function GetUserId($billing_company) { $nome_pulito = trim($billing_company); $nominativo = explode(" ",$nome_pulito); $str = array(); if ( count( $nominativo ) > 1 ) { $args['meta_query']['relation'] = 'AND'; foreach($nominativo as $tag) { $args['meta_query'][] = array( 'key' => 'billing_company', 'value' => $tag, 'compare' => 'LIKE' ); } } else { $args['meta_query'][] = array( 'key' => 'billing_company', 'value' => $nome_pulito); } $utente = get_users($args); return $utente[0]->ID; }
Saluti,
Renato
- Il topic ‘meta query della tabella usermeta’ è chiuso a nuove risposte.