Come aggiungere colonne personalizzate alla schermata di amministrazione dei Custom Post Type
Ho un'altra domanda banale, ma c'è una cosa che non riesco a capire :)
Ho trovato questo ottimo articolo sulla creazione di custom post type:
http://thinkvitamin.com/code/create-your-first-wordpress-custom-post-type/
Non sono sicuro di come funzioni il Passo 4.
Questo tizio scrive:
add_action("manage_posts_custom_column", "portfolio_custom_columns");
add_filter("manage_edit-portfolio_columns", "portfolio_edit_columns");
function portfolio_edit_columns($columns){
$columns = array(
"cb" => "<input type=\"checkbox\" />",
"title" => "Titolo Portfolio",
"description" => "Descrizione",
"year" => "Anno Completamento",
"skills" => "Competenze",
);
return $columns;
}
function portfolio_custom_columns($column){
global $post;
switch ($column) {
case "description":
the_excerpt();
break;
case "year":
$custom = get_post_custom();
echo $custom["year_completed"][0];
break;
case "skills":
echo get_the_term_list($post->ID, 'Skills', '', ', ','');
break;
}
}
Ho due diversi tipi di post ('books' e 'movies').
E non riesco a capire come collegare questo codice con quello giusto!
Sono sicuro che mi sfugge qualcosa (probabilmente nel codice), ma non ho visto dove includesse "portfolio_edit_columns" da nessuna parte nel codice.
Ho trovato questo nel Codex WP: http://codex.wordpress.org/Plugin_API/Action_Reference/manage_posts_custom_column e sembra che
manage_edit-${post_type}_columns
faccia la magia, ma ho provato sia manage_edit-books_columns che manage_edit-movies_columns e niente! :)
Quindi come si creano due layout di colonne separati per diversi tipi di post?

Il codice di ThinkVitamin è corretto. Penso che il problema provenga da un'altra parte del tuo codice.
In realtà, l'hook manage_edit-${post_type}_columns
accetta un argomento $columns
che è un array di tutte le colonne registrate. Per aggiungere una nuova colonna, basta aggiungere un nuovo elemento a questo array, in questo modo:
add_filter('manage_edit-film_columns', 'my_columns');
function my_columns($columns) {
$columns['views'] = 'Visualizzazioni';
return $columns;
}

So come aggiungere colonne, ma non so come visualizzarne alcune per il tipo di post personalizzato "film" e altre per il tipo di post personalizzato "libri". Ed è proprio questo il punto della domanda.

Oh, ho visto che hai detto "Ho provato sia manage_edit-books_columns che manage_edit-movies_columns e niente" e ho pensato che avessi problemi con l'aggiunta di colonne. Comunque, il link che ho fornito contiene un buon esempio con spiegazione su come mostrare il contenuto nelle colonne, dovresti leggerlo.

È ancora più semplice di quanto tu creda.
Hai queste due funzioni in WordPress:
manage_posts_columns (nota la parte "posts")
e
manage_posts_custom_column (di nuovo "posts")
Hai la stessa cosa per le pagine, "manage_page_posts_columns" e "manage_page_posts_custom_column" (nota la parte "page_posts")
Quindi, se hai bisogno di aggiungere quelle colonne per un tipo di post personalizzato, devi fare così. Diciamo che il tuo tipo di post personalizzato si chiama "movie", allora:
manage_movie_posts_columns()
manage_movie_posts_custom_column()
Nota la parte "movie_posts", ecco perché vedi qualcosa come "manage_{custom_type}_posts_columns" nelle pagine del codex.
Per un tipo personalizzato "books":
manage_books_posts_columns()
manage_books_posts_custom_column()
E così via... hai capito?

Dai un'occhiata a come viene riscritto l'argomento $arg per il tuo tipo di post personalizzato.
Per ottenere una visualizzazione migliore dei dati in output, puoi fare qualcosa come:
echo '<pre>';
print_r($custom_post_type_obj);
echo '</pre>';
sull'oggetto del post type quando lo interroghi.
