web-dev-qa-db-ja.com

カスタム投稿タイプ管理画面にカスタム列を追加する方法

私は別の愚かな質問がありますが、私は1つのことを得ることができません:)

カスタム投稿タイプの作成に関するこの非常に良い記事を見つけました。

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

ステップ4がどのように機能するかわかりません。

この人はこう書いている:

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

私は2種類の投稿タイプ(「本」と「映画」)を持っています。

そして私はどうやってこのコードを正しいコードとリンクさせることができないのでしょう。

私は何かが欠けていると確信しています(おそらくコードの中に)が、私は彼がコードのどこかに "portfolio_edit_columns"を含んでいるのを見ませんでした。

私はこれをWP Codexで見つけました: http://codex.wordpress.org/Plugin_API/Action_Reference/manage_posts_custom_column そしてそれはのようです

manage_edit - $ {post_type} _columns

マジックはやっていますが、manage_edit-books_columnsとmanage_edit-movies_columnsの両方を試してみましたが、何もしませんでした。 :)

では、投稿タイプごとに2つの別々の列レイアウトを作成する方法はありますか。

4
Wordpressor

ThinkVitaminからのコードは正しいです。私の問題はあなたのコードのどこか他のところから来たと思います。

実際には、フックmanage_edit-${post_type}_columnsは、すべての登録済み列の配列である引数$columnsを取ります。新しい列を追加するには、この配列に次のように新しい要素を追加するだけです。

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

この記事 はあなたを助けるかもしれないより多くの詳細を持っています。

4
Anh Tran

信じられないほど簡単です。

あなたはwpにこの2つの機能があります。

manage_posts_columns (notice the "posts" part)

and

manage_posts_custom_column (again "posts")

"manage_page_posts_columns"と "manage_page_posts_custom_column"についても同じことが言えます( "page_posts"の部分に注意してください)。

そのため、x投稿タイプにこれらのcolsを追加する必要がある場合は、次のようにするだけで済みます。カスタム投稿タイプの名前は「movie」ではありません。

manage_movie_posts_columns()
manage_movie_posts_custom_column()

"movie_posts"の部分に注意してください。コーデックスページに "manage_ {custom_type} _posts_columns"のようなものが表示されるのはそのためです。

"本"カスタムタイプの場合:

manage_books_posts_columns()
manage_books_posts_custom_column()

そしてそう…それを手に入れた?

4
RGdesign

カスタム投稿タイプの$ argの書き換えを見てみましょう。

出力データを見やすくするには、次のようにします。

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

照会するときは、投稿タイプのオブジェクトに対して。

2
kaiser