Supporto » Varie ed eventuali » Query campi personalizzati autore

  • Ciao a tutti,
    sto usando wordpress per creare un sito in cui gli utenti si possano iscrivere inserendo una loro descrizione ed altre informazioni tramite dei campi personalizzati.
    Ho pensato che la cosa più comoda fosse farli iscrivere come sottoscrittori in modo che il compito dell’amministratore fosse solamente quello di approvare le iscrizioni. Avevo iniziato creando dei custom post type ma così avrei dovuto inserire io tutti i membri oppure dare ad ogni membro l’accesso a tutte le pagine di tutti i membri già iscritti.
    Qualcuno mi sa consigliare una strada migliore?

    Percorrendo la strada che avevo in mente ho creato i campi personalizzati per gli autori con show_user_profile/edit_user_profile e personal_options_update/edit_user_profile_update per salvarli. Fin qui tutto funziona ma quando vado a fare una ricerca sembra che vada a cercare solamente nei campi nome e cognome, se cerco una parola che è nella descrizione o nel sito web non mi da alcun risultato e lo stesso vale per i campi personalizzati.
    Nella pagina search.php ho inserito questo codice:

    <?php // The search term
    		$search_term = $_GET["s"];
    
    		// WP_User_Query arguments
    		$args = array (
    			'role' => '',
    			'order' => 'ASC',
    			'orderby' => 'ID',
    			'search' => '*'.esc_attr( $search_term ).'*',
    			'meta_query' => array(
    				'relation' => 'OR',
    				array(
    					'key'     => 'first_name',
    					'value'   => $search_term,
    					'compare' => 'LIKE'
    				),
    				array(
    					'key'     => 'last_name',
    					'value'   => $search_term,
    					'compare' => 'LIKE'
    				),
    				array(
    					'key' => 'description',
    					'value' => $search_term,
    					'compare' => 'LIKE'
    				),
    				array(
    					'key' => 'campo_personalizzato',
    					'value' => $search_term,
    					'compare' => 'LIKE'
    				)
    			)
    		);
    
    		// Create the WP_User_Query object
    		$wp_user_query = new WP_User_Query($args);
    
    		// Get the results
    		$authors = $wp_user_query->get_results();
    
    		// Check for results
    		if (!empty($authors)) {
    			echo '<ul>';
    			// loop through each author
    			foreach ($authors as $author)
    			{
    				// get all the user's data
    				$author_info = get_userdata($author->ID);
    				echo '<li>' . $author_info->first_name . ' ' . $author_info->last_name . '</li>';
    			}
    			echo '</ul>';
    		} else {
    			echo 'No authors found';
    		} ?>

    Mi sapete dire dove sbaglio? Ovviamente un sito del genere non ha senso se non posso fare una ricerca nei campi personalizzati.
    Grazie mille in anticipo.
    Fosco

Stai visualizzando 2 risposte - dal 1 al 2 (di 2 totali)
  • Se gli utenti devono avere dei campi custom la strada corretta è quella di aggiungere questi campi come meta come hai fatto.

    Quello che non capisco è da dove vuoi fare la ricerca.
    La pagina search.php (e spero di non sbagliarmi) cerca nella tabella wp_posts e non tra gli utenti wp_users.

    Con il codice che hai inserito alteri i risultati ma a questo punto potresti provare ad usare un pre_get_posts.

    Detto questo prova a togliere dalla tua query usa i campi ‘search’ e ‘role’ e prova a dare una ricerca sui soli meta…

    Chi ha creato la discussione foscone

    (@foscone)

    Ciao,
    sembrerebbe funzionare togliendo i campi search e role. Ero convinto che search servisse per passare alla query il termine da cercare ma evidentemente non è così.
    Faccio qualche prova e ti faccio sapere se ho effettivamente risolto.
    Grazie mille intanto!

Stai visualizzando 2 risposte - dal 1 al 2 (di 2 totali)
  • Il topic ‘Query campi personalizzati autore’ è chiuso a nuove risposte.