web-dev-qa-db-fra.com

Type de message personnalisé

J'ai une autre question idiote, mais je ne peux rien avoir :)

J'ai trouvé ce très bon article sur la création de types d'articles personnalisés:

http://thinkvitamin.com/code/create-your-first-wordpress-custom-post-type/

Je ne sais pas comment fonctionne l'étape 4.

Ce gars écrit:

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;
  }
}

J'ai deux types de publications différents ("livres" et "films").

Et je ne vois pas comment lier ce code avec le bon!

Je suis sûr qu'il me manque quelque chose (probablement dans le code), mais je ne l'ai pas vu inclure "portfolio_edit_columns" dans le code.

J'ai trouvé ceci dans WP Codex: http://codex.wordpress.org/Plugin_API/Action_Reference/manage_posts_custom_column et il semble que

manage_edit - $ {post_type} _columns

fait la magie, mais j'ai essayé à la fois manage_edit-books_columns et manage_edit-movies_columns et rien! :)

Alors, comment créer deux mises en page de colonnes distinctes pour différents types de publication?

4
Wordpressor

Le code de ThinkVitamin est correct. Je pense que le problème est venu d'ailleurs où dans votre code.

En fait, le hook manage_edit-${post_type}_columns prend un argument $columns qui est un tableau de toutes les colonnes enregistrées. Pour ajouter une nouvelle colonne, ajoutez simplement un nouvel élément à ce tableau, comme ceci:

add_filter('manage_edit-film_columns', 'my_columns');
function my_columns($columns) {
    $columns['views'] = 'Views';
    return $columns;
}

Ce post a plus de détails qui pourraient vous aider.

4
Anh Tran

C'est encore plus facile que vous ne le croyez.

Vous avez ces deux fonctions sur wp:

manage_posts_columns (notice the "posts" part)

and

manage_posts_custom_column (again "posts")

Vous avez la même chose pour les pages, "manage_page_posts_columns" et "manage_page_posts_custom_column" (remarquez la partie "page_posts")

Donc, si vous avez besoin d’ajouter ces colonnes pour le type de post x, il vous suffit de faire comme ceci, sans indiquer que le nom de votre type de post personnalisé est "movie", puis:

manage_movie_posts_columns()
manage_movie_posts_custom_column()

Notez la partie "movie_posts", c'est pourquoi vous voyez quelque chose comme "manage_ {custom_type} _posts_columns" sur les pages de codex.

Pour un type personnalisé "livres":

manage_books_posts_columns()
manage_books_posts_custom_column()

Et ainsi de suite ... compris?

4
RGdesign

Jetez un coup d'œil à la façon dont le $ arg de réécriture de votre type d'article personnalisé est.

Pour obtenir une meilleure vue des données de sortie, il suffit de faire quelque chose comme:

echo '<pre>';   
print_r($custom_post_type_obj);   
echo '</pre>';   

sur l'objet de type post lors de l'interrogation.

2
kaiser