web-dev-qa-db-de.com

So fügen Sie benutzerdefinierte Spalten zum Admin-Bildschirm "Benutzerdefinierter Beitragstyp" hinzu

Ich habe noch eine dumme Frage, aber ich kann nicht eins bekommen :)

Ich habe diesen sehr guten Artikel zum Erstellen benutzerdefinierter Beitragstypen gefunden:

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

Ich bin nicht sicher, wie Schritt 4 funktioniert.

Dieser Kerl schreibt:

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

Ich habe zwei verschiedene Beitragstypen ("Bücher" und "Filme").

Und ich kann nicht verstehen, wie ich diesen Code mit dem richtigen verknüpfen kann!

Ich bin sicher, dass mir etwas fehlt (höchstwahrscheinlich im Code), aber ich habe nicht gesehen, dass er irgendwo im Code "portfolio_edit_columns" enthält.

Ich habe dies in WP Codex gefunden: http://codex.wordpress.org/Plugin_API/Action_Reference/manage_posts_custom_column und es scheint so

manage_edit - $ {post_type} _columns

macht die Magie, aber ich habe sowohl manage_edit-books_columns als auch manage_edit-movies_columns ausprobiert und nichts! :)

So erstellen Sie zwei separate Spaltenlayouts für verschiedene Beitragstypen?

4
Wordpressor

Der Code von ThinkVitamin ist richtig. Ich denke das Problem kam von woanders in deinem Code.

Tatsächlich akzeptiert der Hook manage_edit-${post_type}_columns ein Argument $columns, das ein Array aller registrierten Spalten ist. Um eine neue Spalte hinzuzufügen, fügen Sie diesem Array einfach ein neues Element hinzu:

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

Dieser Beitrag hat weitere Details, die Ihnen helfen könnten.

4
Anh Tran

Es ist noch einfacher als Sie glauben.

Sie haben diese zwei Funktionen auf wp:

manage_posts_columns (notice the "posts" part)

and

manage_posts_custom_column (again "posts")

Sie haben dasselbe für die Seiten "manage_page_posts_columns" und "manage_page_posts_custom_column" (beachten Sie den Teil "page_posts").

Wenn Sie also diese Spalten für den x-Post-Typ hinzufügen müssen, müssen Sie nur so vorgehen: Sagen Sie nicht, dass der Name Ihres benutzerdefinierten Post-Typs "movie" ist, dann:

manage_movie_posts_columns()
manage_movie_posts_custom_column()

Beachten Sie den Teil "movie_posts", deshalb sehen Sie so etwas wie "manage_ {custom_type} _posts_columns" auf Codex-Seiten.

Für einen benutzerdefinierten Typ "Bücher":

manage_books_posts_columns()
manage_books_posts_custom_column()

Und so weiter ... verstanden?

4
RGdesign

Sehen Sie sich an, wie das $ arg für Ihren benutzerdefinierten Beitragstyp lautet.

Um eine bessere Ansicht der Ausgabedaten zu erhalten, machen Sie einfach etwas wie

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

auf dem Beitragstyp Objekt bei der Abfrage.

2
kaiser