Cum să adaugi coloane personalizate în ecranul de administrare pentru Custom Post Type
Am o altă întrebare poate naivă, dar nu reușesc să înțeleg un lucru :)
Am găsit acest articol foarte bun despre crearea tipurilor de postări personalizate:
http://thinkvitamin.com/code/create-your-first-wordpress-custom-post-type/
Nu sunt sigur cum funcționează Pasul 4.
Acest tip scrie:
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" => "Titlu Portfolio",
"description" => "Descriere",
"year" => "Anul Finalizării",
"skills" => "Abilități",
);
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;
}
}
Am două tipuri diferite de postări ('books' și 'movies').
Și nu reușesc să înțeleg cum să conectez acest cod cu cel corect!
Sunt sigur că îmi scapă ceva (cel mai probabil în cod), dar nu l-am văzut incluzând "portfolio_edit_columns" nicăieri în cod.
Am găsit asta în WP Codex: http://codex.wordpress.org/Plugin_API/Action_Reference/manage_posts_custom_column și se pare că
manage_edit-${post_type}_columns
face magia, dar am încercat atât manage_edit-books_columns cât și manage_edit-movies_columns și nimic! :)
Deci cum se creează două layouturi separate de coloane pentru tipuri diferite de postări?

Codul de la ThinkVitamin este corect. Cred că problema vine din altă parte din codul tău.
De fapt, hook-ul manage_edit-${post_type}_columns
primește un argument $columns
care este un array cu toate coloanele înregistrate. Pentru a adăuga o nouă coloană, trebuie doar să adaugi un nou element în acest array, astfel:
add_filter('manage_edit-film_columns', 'my_columns');
function my_columns($columns) {
$columns['views'] = 'Vizualizări';
return $columns;
}

Știu cum să adaug coloane, dar nu știu cum să afișez unele pentru tipul personalizat de postări "filme" și altele pentru tipul personalizat de postări "cărți". Aceasta este întrebarea mea.

Ah, am văzut că ai spus "Am încercat atât manage_edit-books_columns cât și manage_edit-movies_columns și nimic" și am crezut că ai probleme cu adăugarea coloanelor. Oricum, linkul pe care l-am oferit conține un bun exemplu cu explicații despre cum să afișezi conținut în coloane, ar trebui să-l citești.

Este chiar mai ușor decât crezi.
În WordPress ai aceste două funcții:
manage_posts_columns (observă partea cu "posts")
și
manage_posts_custom_column (din nou "posts")
Ai același lucru și pentru pagini: "manage_page_posts_columns" și "manage_page_posts_custom_column" (observă partea cu "page_posts")
Așadar, dacă ai nevoie să adaugi aceste coloane pentru un anumit tip de postare, trebuie doar să faci așa. Să zicem că tipul tău de postare personalizat se numește "film", atunci:
manage_movie_posts_columns()
manage_movie_posts_custom_column()
Observă partea cu "movie_posts" - de aceea vezi expresii precum "manage_{tip_personalizat}_posts_columns" în documentația Codex.
Pentru un tip personalizat "cărți":
manage_books_posts_columns()
manage_books_posts_custom_column()
Și tot așa... ai înțeles?

Uită-te cum este argumentul $arg pentru rescrierea tipului tău de postare personalizată.
Pentru a vedea mai clar datele de ieșire, poți face ceva de genul:
echo '<pre>';
print_r($custom_post_type_obj);
echo '</pre>';
pe obiectul tipului de postare când îl interoghezi.
