In questo tutorial vediamo come aggiungere un campo personalizzato o custom field all’editor delle categorie o di altre tassonomie custom di WordPress.

I motivi per cui può essere utile un campo aggiuntivo sono diversi, ad esempio chi utilizza il plugin Yoast WordPress SEO può notare che per ogni categoria sono presenti alcuni campi aggiuntivi che permettono l’inserimento dei metatag utili per l’ottimizzazione SEO.

Noi aggiungiamo semplicemente un input di testo, e lo utilizzeremo per l’inserimento dell’url di un’immagine thumbnail da associare alla categoria. Evitiamo di implementare l’uploader per tenere il tutorial semplice.

Per inserirci all’interno dell’editor delle categorie sono necessarie due funzioni e due action hook.

Prima funzione: aggiungere l’input al form di modifica della categoria

Definiamo la funzione isw_custom_fields_categoria() dove la variabile $tag contiene l’oggetto del termine della categoria corrente.

stdClass Object
/*
(
    [term_id] => 2
    [name] => News
    [slug] => news
    [term_group] => 0
    [term_taxonomy_id] => 2
    [taxonomy] => category
    [description] =>
    [parent] => 0
    [count] => 4
    [filter] => edit
)*/

Recuperiamo l’eventuale indirizzo dell’immagine precedentemente salvato e lo inseriamo come valore predefinito dell’input.
Nel corpo della funzione troviamo l’html del input di testo.

La funzione deve essere spedita all’hook edit_category_form_fields.

function isw_custom_fields_categoria( $tag ) {

    $thumb_categoria = get_option( "thumb_categoria-".$tag->term_id );
    ?>
    <tr class="form-field">
        <th scope="row" valign="top"><label for="category-title"><?php _e( "Thumbnail Categoria" ); ?></label></th>
        <td>
            <input id="category-title" name="thumb_categoria[<?php echo $tag->term_id ?>][title]" value="<?php if ( isset( $thumb_categoria[ $tag->term_id ] ) ) esc_attr_e( $thumb_categoria[ $tag->term_id ]['title'] ); ?>" />
            <span class="description"><?php _e('Immagine in evidenza della categoria'); ?></span>
        </td>
    </tr>
    <!-- rinse & repeat for other fields you need -->
    <?php
}

add_action( 'edit_category_form_fields', 'isw_custom_fields_categoria' );

Seconda funzione: salvare l’indirizzo dell’immagine come opzione

Una volta che salviamo le modifiche, l’indirizzo si troverà all’interno di $_POST. Quindi è necessario scrivere una
funzione per intercettare il valore inserito.
Una volta recuperato l’indirizzo la salviamo nel database come opzione generica di wordpress.

// La varibile $term_id contiene l'id della categoria.
function isw_salva_custom_fields_categoria( $term_id )
{
    $key = 'thumb_categoria-' . $term_id;

    if ( isset( $_POST['thumb_categoria'] ) )
        {
             update_option( $key, $_POST['thumb_categoria']);
        }

}

add_action( 'edit_category', 'isw_salva_custom_fields_categoria' );

Estendere il campo a tassonomie personalizzate

L’esempio precedente si applica solo alle categorie predefinite di WordpPress. Per aggiungere un campo personalizzato a una tassonomia è necessario utilizzare due hook differenti secondo questo schema:

1. {$taxonomy}_edit_form_fields

2. edit_{$taxonomy}
Se ad esempio abbiamo una tassonomia di nome ‘regioni’ per inserire il nuovo campo basta aggiungere due righe.
Non c’è bisogno di ricreare le funzioni, basta associarle nuovamente all’hook giusto.

add_action( "regioni_edit_form_fields", 'isw_custom_fields_categoria' );
add_action( "edit_regioni", 'isw_salva_custom_fields_categoria' );

  inStileWeb.com
blog comments powered by Disqus