Cómo agregar columnas personalizadas a la pantalla de administración de tipo postS de tipo de publicación personalizado

wordpress.stackexchange https://wordpress.stackexchange.com/questions/11628

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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
scroll top