Cómo agregar columnas personalizadas a la pantalla de administración de tipo postS de tipo de publicación personalizado
-
16-10-2019 - |
Pregunta
Tengo otra pregunta tonta, pero no puedo obtener una cosa :)
Encontré este muy buen artículo sobre la creación de tipos de publicaciones personalizadas:
http://thinkvitamin.com/code/create-your-first-wordpress-custom-post-type/
No estoy seguro de cómo funciona el paso 4.
Este chico escribe:
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" => "Portfolio Title",
"description" => "Description",
"year" => "Year Completed",
"skills" => "Skills",
);
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;
}
}
Tengo dos tipos de publicaciones diferentes ('libros' y 'películas').
¡Y no puedo obtener cómo vincular este código con el correcto!
Estoy seguro de que me estoy perdiendo algo (probablemente en el código), pero no lo vi que incluye "Portfolio_Edit_Columns" en cualquier parte del código.
He encontrado esto en WP Codex: http://codex.wordpress.org/plugin_api/action_reference/manage_posts_custom_column Y parece que
manage_edit-$ {post_type} _columns
¡Hace la magia, pero he probado tanto gestionar_edit-books_columns y manage_edit-movies_columns y nada! :)
Entonces, ¿cómo crear dos diseños de columna separados para diferentes tipos de publicación?
Solución
El código de ThinkVitamin tiene razón. Creo que el problema vino de otro lugar de tu código.
En realidad, el gancho manage_edit-${post_type}_columns
Toma una discusión $columns
que es una matriz de todas las columnas registradas. Para agregar una nueva columna, simplemente agregue un nuevo elemento a esta matriz, como esta:
add_filter('manage_edit-film_columns', 'my_columns');
function my_columns($columns) {
$columns['views'] = 'Views';
return $columns;
}
Esta publicación tiene más detalles que podrían ayudarlo.
Otros consejos
Es incluso más fácil de lo que crees.
Tienes estas dos funciones en WP:
manage_posts_columns (notice the "posts" part)
and
manage_posts_custom_column (again "posts")
Tiene la misma cosa para las páginas, "Manage_Page_Posts_Columns" y "Manage_Page_Posts_Custom_Column" (observe la parte "Page_Posts")
Entonces, si necesita agregar esos cols para el tipo de publicación X, solo necesita hacer así, dice que su nombre de tipo de publicación personalizado es "película", entonces:
manage_movie_posts_columns()
manage_movie_posts_custom_column()
Observe la parte "Movie_Posts", por eso ves algo como "Manage_ {Custom_Type} _Posts_Columns" en las páginas de Codex.
Para un tipo personalizado de "libros":
manage_books_posts_columns()
manage_books_posts_custom_column()
Y así que ... ¿lo tienes?
Eche un vistazo a cómo es la reescritura $ arg para su tipo de publicación personalizada.
Para obtener una mejor vista de los datos de salida, solo haga algo como
echo '<pre>';
print_r($custom_post_type_obj);
echo '</pre>';
en el objeto de tipo post al consultarlo.