WordPress: estendere le informazioni utente
martedì 26 gennaio, 2010Le informazioni su un utente, o autore, di un blog WordPress possono essere estese in modo semplice. Potrebbe ad esempio essere utile inserire la data di nascita, delle informazioni bibliografiche, l’indirizzo della sede di lavoro o, estremamente comodo, un campo per dei permessi speciali – da controllare in seguito nel template.
L’operazione che ci accingiamo a fare non necessita di un Plugin, ma il codice che serve può essere posizionato nel – consueto – file functions.php.
Nota: per situazioni più articolate l’uso di un Plugin potrebbe essere la scelta migliore. Agendo sul file
functions.phpleghiamo il nostro codice al tema. Un Plugin, soprattutto se il codice scritto è “abbondante”, risulta di più facile riutilizzo.
Apriamo dunque il file functions.php e iniziamo scrivendo il codice che visualizzerà il nostro campo aggiuntivo nell’amministrazione utente di WordPress:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | // Questa funzione - vedi add_action() più sotto, si occupa di visualizzare // il nostro campo aggiuntiva nell'amministrazione di Wordpress function nuovo_user_meta($user) { ?> <h3>Campi aggiuntivi</h3> <table class="form-table"> <tr> <th><label for="nuovo_user_meta">Nuovo Campo</label></th> <td> <input type="text" name="nuovo_user_meta" id="nuovo_user_meta" value="<?php echo esc_attr( get_the_author_meta( 'nuovo_user_meta', $user->ID ) ); ?>" class="regular-text" /><br /> <span class="description">Inserisci il tuo campo aggiuntivo.</span> </td> </tr> </table> <?php } // Aggiungiamo la nostra funzione all'amministrazione di Wordpress // in questo "semplice" caso, la funzione "mostra" (show_user_profile) // e quella di "modifica" (edit_user_profile) coincidono, ma in casi // più articolati potrebbero essere differenti add_action( 'show_user_profile', 'nuovo_user_meta' ); add_action( 'edit_user_profile', 'nuovo_user_meta' ); |
Andando a sbirciare nell’amministrazione, selezionando il vostro utente, troverete già il nuovo campo. Tuttavia per adesso il nuovo campo è solo visualizzato, ma basteranno poche altre righe di codice per gestire la sua memorizzazione:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // Memorizza, per l'utente $user_id, un nuovo campo identificato come // 'nuovo_user_meta' function nuovo_user_meta_update( $user_id ) { // solo chi ha i permessi di editing if ( !current_user_can( 'edit_user', $user_id ) ) return false; /* Copy and paste this line for additional fields. Make sure to change 'twitter' to the field ID. */ update_usermeta( $user_id, 'nuovo_user_meta', $_POST['nuovo_user_meta'] ); } // Anche in questo caso ci avvaliamo della add_action() per aggiungere // il nostro pezzo di codice. Notate che permettiamo l'aggiornamento // sia all'utente che visualizza il proprio profilo (personal_options_update) // che a qualsiasi utente amministratore o che ha i permessi di edit (edit_user_profile_update) add_action( 'personal_options_update', 'nuovo_user_meta_update' ); add_action( 'edit_user_profile_update', 'nuovo_user_meta_update' ); |
A questo punto il nostro campo aggiuntivo è completo e non resta altro che utilizzarlo. Per recuperare un campo di questo tipo è sufficiente chiamare la funzione get_the_author_meta() o the_author_meta():
1 | <p>Campo Aggiuntivo: <?php the_author_meta('nuovo_user_meta') ?></p> |












1

[...] WordPress: estendere le informazioni utente Le informazioni su un utente, o autore, di un blog WordPress possono essere estese in modo semplice. Potrebbe ad esempio essere utile inserire la data di nascita, delle informazioni bibliografiche, l'indirizzo della sede di lavoro o, estremamente comodo, un campo per dei permessi speciali – da controllare in seguito nel template. blog: undolog | leggi l'articolo [...]
Credo che ci sia un errore nella scrittura del primo blocco di codice…potete controllare? Se modifico il mio file functions.php aggiungendo questo codice il sito va in crash… Dove sbaglio?
Grazie.
@Pino: su quale versione di WordPress l’hai provato? Hai per caso qualche messaggio d’errore a video?
Uso WordPress 2.9.2
Questo è il mio file functions.php:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
if ( function_exists('register_sidebars') )
register_sidebars(2);
?>
// Questa funzione - vedi add_action() più sotto, si occupa di visualizzare
// il nostro campo aggiuntiva nell'amministrazione di Wordpress
function nuovo_user_meta($user) {
?>
<h3>Campi aggiuntivi</h3>
<table class="form-table">
<tr>
<th><label for="nuovo_user_meta">Nuovo Campo</label></th>
<td>
<input type="text" name="nuovo_user_meta" id="nuovo_user_meta" value="<?php echo esc_attr( get_the_author_meta( 'nuovo_user_meta', $user->ID ) ); ?>" class="regular-text" /><br />
<span class="description">Inserisci il tuo campo aggiuntivo.</span>
</td>
</tr>
</table>
<?php }
// Aggiungiamo la nostra funzione all'amministrazione di Wordpress
// in questo "semplice" caso, la funzione "mostra" (show_user_profile)
// e quella di "modifica" (edit_user_profile) coincidono, ma in casi
// più articolati potrebbero essere differenti
add_action( 'show_user_profile', 'nuovo_user_meta' );
add_action( 'edit_user_profile', 'nuovo_user_meta' );
l’errore che mi dà è:
@Pino: sembrerebbe una parentesi graffa non chiusa bene…