WordPress: estendere le informazioni utente

martedì 26 gennaio, 2010

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.
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.php leghiamo 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>

Post correlati

Questo articolo ti è stato utile?: Per nientePocoAbbastanzaMoltoMoltissimo
Loading ... Loading ...

5 commenti a: “WordPress: estendere le informazioni utente”

  1. 23 mar, 2010 Notizie dai blog su Wordpress: come cambiare il nome utente ADMIN:

    [...] 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 [...]

  2. 28 mar, 2010 Pino:

    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.

  3. 28 mar, 2010 Giovambattista Fazioli:

    @Pino: su quale versione di WordPress l’hai provato? Hai per caso qualche messaggio d’errore a video?

  4. 28 mar, 2010 Pino:

    Uso WordPress 2.9.2

    Questo è il mio file functions.php:

    1
    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
    <?php
    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à è:

    1
    Parse error: syntax error, unexpected '}' in /var/www/virtual/.../functions.php on line 24
  5. 29 mar, 2010 Giovambattista Fazioli:

    @Pino: sembrerebbe una parentesi graffa non chiusa bene…

Lascia un commento

TAG XHTML PERMESSI: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERIMENTO CODICE:
<pre></pre>                                  // blocco generico
<code></code>                                // blocco generico
[cc_actionscript][/cc_actionscript]          // Actionscript
[cc_actionscript3][/cc_actionscript3]        // Actionscript 3
[cc_css][/cc_css]                            // CSS Style Sheet
[cc_html][/cc_html]                          // HTML
[cc_js][/cc_js]                              // Javascript
[cc_objc][/cc_objc]                          // Objective-C
[cc_php][/cc_objc]                           // PHP
[cc_sql][/cc_sql]                            // SQL