Home>Guide>Aggiungere una colonna personalizzata in WordPress

Aggiungere una colonna personalizzata in WordPress


Aggiungere una colonna personalizzata in WordPress


Spesso, soprattutto nel caso di custom post types, potresti avere la necessità di visualizzare nella tabella contenente i posts nel backend di WordPress una nuova colonna contenente, ad esempio, un campo personalizzato che possa aiutarti nella gestione dei contenuti e velocizzare il tuo lavoro.

  • Leggi l'articolo, ti bastano solo 1 minuto, 10 secondi
    Sei di fretta? Scarica il PDF e consultalo quando vuoi!

Un esempio pratico: l'ID

Ipotizza, a scopo dimostrativo, di voler aggiungere alla tabella che contiene l’elenco degli articoli di WordPress, che trovi in:

Articoli > Tutti gli articoli

una nuova colonna che visualizzi l’ID univoco dell’articolo.


Aggiungere la colonna

Il primo passo da compiere, è far capire a WordPress la tua intenzione e creare una nuova colonna che si aggiunga a quelle fornite di default. Per farlo, basta aggiungere al file functions.php del tuo tema, che trovi in:

wp-content/themes/{nome_del_tema}/

il seguente codice:

// Aggiunge la colonna ID
add_filter( 'manage_posts_columns', function( $columns ) {
    $columns['id'] = __( 'ID', 'dominio' );
    return $columns;
} );

Sfruttando l’hook manage_post_columns, non fai altro che aggiungere un nuovo elemento all’array che contiene le colonne da visualizzare.

Ricaricando la pagina, vedrai la nuova colonna appena creata. Ma come fare a gestirne il contenuto?


Riempiamo la colonna appena creata

Ora non ti resta che fare in modo che le celle della nuova colonna siano riempite con il giusto contenuto. Per farlo, è necessario aggiungere al file functions.php del tuo tema il seguente codice:

// Aggiunge il contenuto della colonna ID
add_filter( 'manage_posts_custom_column', function( $column_name, $post_id ) {
	if ( $column_name === 'id' ) {
		echo get_the_ID();
	}
}, 10, 2 );

Con l’aiuto di un altro filtro, manage_posts_custom_column, hai appena creato una funzione che restituisce l’ID dell’articolo e lo assegna alla colonna dal nome id.

Ricaricando nuovamente la pagina, vedrai che ogni articolo presente nell’elenco, ha in corrispondenza della colonna id l’identificativo dell’articolo stesso così.


Rendere la colonna ordinabile

Per completare il lavoro, ecco un piccolo valore aggiunto. Se volessi ordinare la tua lista in base ai valori presenti nella colonna appena creata, ti basta aggiungere al file functions.php:

// Rende la colonna ordinabile
add_filter( 'manage_edit-post_sortable_columns', function( $columns ) {
	$columns[ 'id' ] = 'id';
	return $columns;
} );

che non fa altro che aggiungere la colonna all’elenco delle colonne su cui abilitare la funzione di ordinamento presente nel backend di WordPress.

Ed ecco finalmente il risultato finale:


Custom post types

Naturalmente, puoi aggiungere una colonna personalizzata non solo agli articoli, ma anche ad eventuali custom post types, semplicemente utilizzando gli hooks adatti.
Così, l’hook manage_posts_columns diventa:

manage_${post_type}_posts_columns

e l’hook manage_posts_custom_column diventa:

manage_{$post_type}_posts_custom_column

sostituendo alla variabile ${post_type} il nome assegnato al tuo custom post type, ed il gioco è fatto.



Ti è piaciuto questo articolo? Regalami un click per ripagarmi dello sforzo



Code4Life ti è stato utile? Sostienici con una donazione!

Dona con PayPal

Hai trovato interessante l’articolo? Allora ti consiglio di leggere:

Come creare un plugin per jQuery

Come creare un plugin per jQuery


Impariamo a creare un plugin per jQuery, utile per automatizzare una serie di operazioni che vogliamo rendere universali e riutilizzabili nel nostro codice.

Creare un effetto hover animato sulle immagini con CSS3

Creare un effetto hover animato sulle immagini con CSS3


Ecco come dare vita alle immagini nel nostro sito applicando delle stupefacenti animazioni utilizzando solamente CSS3 attivate dal semplice passaggio del mouse.

Oppure cerca tra gli articoli correlati


Qualche dubbio? Ecco le opinioni degli altri utenti

bellissimo articolo, ma mi chiedevo, se volessi fare la stessa cosa con woocommerce, aggiungere una colonna che visualizzi ID categoria nell pagina prodotti> categorie, come posso fare?
se potete aiutarmi ringrazio tanto.

In risposta a andrea

Ciao Andrea, grazie mille!
Nel tuo caso, gli hooks che WordPress mette a disposizione sono:

manage_edit-{taxonomy_name}_columns
manage_{taxonomy_name}_custom_column
dove {taxonomy_name} è il nome della tassonomia a cui vuoi aggiungere la colonna, quindi “product_cat”.

Per saperne di più, ecco la pagina ufficiale di riferimento della documentazione:

https://codex.wordpress.org/Plugin_API/Filter_Reference/manage_$taxonomy_id_columns

nel mio snippet ho inserito questo codice:
ma non funziona, riesci a dirmi per favore dove stò sbagliando?:

// Aggiunge il contenuto della colonna ID
add_filter( 'manage_edit-product_cat_columns', function( $column_name, $post_id ) {
if ( $column_name === 'id' ) {
echo get_the_ID();
}
}, 10, 2 );

In risposta a andrea

Ciao Andrea,
la funzione get_theID() di WordPress funziona con post type, non con le tassonomie. In particolare, considera che l’hook manage_{taxonomy_name}_custom_column passa già come argomento l’ID della categoria, quindi ti basta modificare in questo modo:


add_filter('manage_product_cat_custom_column', function( $columns, $column, $term_id ) {
if ( $column === "id" ) {
return $term_id;
}
}, 10, 3);

per ottenere l’ID della categoria.

Ciao! l'articolo è esattamente quello che mi serve! Ma per mettere una colonna con la data di pubblicazione (invece dell'ID), cosa devo sostituire con post_date ? Quali sono tutte le colonne che posso aggiungere? Grazie!

In risposta a Ferdinando

Ciao Ferdinando, mi fa piacere che l’articolo ti sia stato di aiuto!
Indipendentemente dalla key che dai all’array delle colonne (nell’esempio “id”), ciò che davvero cambia è il contenuto, ovvero ciò che richiami con l’hook “manage_posts_custom_column” (paragrafo: “Riempiamo la colonna appena creata”). Anziché utilizzare la funzione “get_the_ID()” dovrai utilizzare la funzione specifica per ciò che ti occorre, nel tuo caso, volendo la data di pubblicazione, la funzione è “get_the_date()”, di cui trovi qui la documentazione:

https://developer.wordpress.org/reference/functions/get_the_date/

In teoria non hai limiti a ciò che puoi inserire come colonne, ma ovviamente a seconda del contenuto dovrai aggiungere funzioni più o meno complesse per recuperare il dato da visualizzare, qui trovi qualche esempio:

https://developer.wordpress.org/reference/functions/get_post_field/

Cordiali saluti

E tu cosa ne pensi? Condividi la tua opinione e discutiamone insieme
La tua email non sarà resa pubblico o utilizzata per inviarti spam, te lo prometto

Iscrivimi alla newsletter per ricevere news ed aggiornamenti
Utilizziamo piattaforme di terze parti per l’invio di newsletter. (Informativa sulla privacy)
Tienimi aggiornato su questo articolo
Ricevi una email di notifica quando qualcuno scriverà un commento a questo articolo. (Informativa sulla privacy)
Ricorda i miei dati per la prossima volta che scriverò un commento
Il tuo nome e la tua email verranno salvati in un cookie in questo browser. (Informativa sulla privacy)