Come aggiungere una colonna personalizzata alla tabella "Gestione categorie"?
L'ho già fatto per gli articoli, ma non riesco a trovare il modo corretto per riferirmi alle colonne della tabella delle categorie.
Sto cercando di aggiungere una colonna intitolata "Immagine" alla tabella, in modo che quando viene visualizzata la griglia delle categorie, se è presente un'immagine associata alla categoria, questa appaia nella griglia.
Il primo passo per me è determinare il filtro corretto da utilizzare per inserire la colonna nella tabella.
Ho provato ciascuno di questi senza successo...
add_filter('manage_categories_columns', 'myFunction', 10, 2);
add_filter('manage_category_columns', 'myFunction', 10, 2);
function myFunction($cat_columns)
{
$cat_columns['cat_image_thumb'] = 'Immagine';
return $cat_columns;
}

Aggiungere il nome della colonna
function manage_my_category_columns($columns)
{
// aggiungi 'La mia colonna'
$columns['my_column'] = 'La mia colonna';
return $columns;
}
add_filter('manage_edit-category_columns','manage_my_category_columns');
Successivamente vogliamo inserire i dati al suo interno:
function manage_category_custom_fields($deprecated,$column_name,$term_id)
{
if ($column_name == 'my_column') {
echo 'test';
}
}
add_filter ('manage_category_custom_column', 'manage_category_custom_fields', 10,3);
Spero che questo sia stato utile.

Il filtro è manage_{$screen->id}_columns
, e $screen->id
è edit-category
, dandoti manage_edit-category_columns
.
Ho trovato questo inserendo un var_dump()
in get_column_headers()
, che viene chiamato da print_column_headers()
, a sua volta chiamato in wp-admin/edit-tags.php
, la pagina in cui modifichi gli elementi della categoria.

@Jan: Grazie! Ha funzionato per l'intestazione della colonna. Ora sto provando a usare il tuo trace route per capire come aggiungere l'inserimento della riga. Guardando edit-tags.php vedo la chiamata "tag_rows", che credo sia quella che crea le righe, ma non riesco a trovare quella funzione per fare var_dump e ottenere il nome del filtro. Hai qualche idea?

@Scott: Se stai parlando di una tassonomia gerarchica come le categorie, tag_rows()
chiama _term_rows()
, che a sua volta chiama _tag_row()
. Questa funzione chiama l'azione manage_{$taxonomy}_custom_column
, che nel tuo caso sarebbe manage_category_custom_column
.

@Jan grazie. Riesco a impostare l'azione, ma non sembro riuscire a far rispondere l'echo.. action > add_action('manage_category_custom_column', 'myFunction', 10, 2);

@Scott: In effetti, avevo torto, si tratta di un filtro, non di un'azione, quindi dovresti restituire il contenuto che vuoi visualizzare, non stamparlo direttamente - a differenza delle colonne personalizzate dei post, dove invece devi stamparlo.

OK, così va meglio. Funziona perfettamente con il filtro e return invece che con l'azione ed echo. Grazie Jan!

@Jan, Sembra che l'ID della categoria non venga passato alla funzione. Ho due argomenti nella chiamata della funzione, il primo è vuoto e il secondo contiene l'ID della riga personalizzata. Dovrei portare questa domanda a un thread dedicato visto che abbiamo praticamente risposto a quella originale?

@Scott: Probabilmente è meglio porla come una nuova domanda, in effetti.

L'ho appena trovato. È il terzo argomento. Ho dovuto cambiare il filtro a 10,3 e la funzione diventa myColumnRows($empty_arg, $column_name, $category_id)

@Scott: Qui è normale: se nessun plugin fornisce nulla da mostrare nella colonna, dovrebbe essere vuoto. Ricorda, questo è un filtro: il primo argomento è il valore che la tua funzione di callback andrà a modificare. echo '<td>'; do_action( 'custom_column' ); echo '</td>';
convertito in un filtro diventa echo '<td>'; echo apply_filters( 'custom_column', '' ); echo '</td>';
.

Oltre all'esempio di @LeoDang, la custom_column viene applicata alla tassonomia personalizzata utilizzando i seguenti filtri.
Testato e validato in Wordpress 3.8
1.Aggiungere un'intestazione di colonna personalizzata
// questi filtri influenzeranno solo le colonne personalizzate, la colonna predefinita non sarà modificata
// filtro: manage_edit-{$taxonomy}_columns
function custom_column_header( $columns ){
$columns['header_name'] = 'Nome Intestazione da Visualizzare';
return $columns;
}
add_filter( "manage_edit-shop-subcategory_columns", 'custom_column_header', 10);
2.Aggiungere i dati della colonna personalizzata all'intestazione della colonna corrispondente
// ordine parametri: valore_da_visualizzare, $column_name, $tag->term_id
// filtro: manage_{$taxonomy}_custom_column
function custom_column_content( $value, $column_name, $tax_id ){
// var_dump( $column_name );
// var_dump( $value );
// var_dump( $tax_id );
// per più colonne personalizzate, si può considerare di usare il nome della colonna per distinguerle
// sebbene l'istruzione If funzioni, Switch è un approccio più generico e ben strutturato per più colonne
// if ($column_name === 'header_name') {
// echo '1234';
// }
switch( $column_name ) {
case 'header_name1':
// il tuo codice qui
$value = 'nome intestazione 1';
break;
case 'header_name2':
// il tuo codice qui
$value = 'nome intestazione 2';
break;
// ... similmente per più colonne
default:
break;
}
return $value; // questo è il valore da visualizzare
}
add_action( "manage_shop-subcategory_custom_column", 'custom_column_content', 10, 3);
Puoi anche fare riferimento al codice gist condiviso online per eventuali aggiornamenti e note aggiuntive.
