Как добавить пользовательские колонки на страницу администрирования произвольного типа записей

10 мар. 2011 г., 03:24:09
Просмотры: 24.4K
Голосов: 4

У меня есть еще один глупый вопрос, но я не могу разобраться с одной вещью :)

Я нашел эту очень хорошую статью о создании произвольных типов записей:

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" => "Название портфолио",
    "description" => "Описание",
    "year" => "Год завершения",
    "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;
  }
}

У меня есть два разных типа записей ('books' и 'movies').

И я не могу понять, как связать этот код с правильным типом записи!

Я уверен, что упускаю что-то (скорее всего в коде), но я не видел, чтобы он где-либо включал "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, и ничего не работает! :)

Так как создать два разных макета колонок для разных типов записей?

0
Все ответы на вопрос 3
3

Код от ThinkVitamin верный. Полагаю, проблема кроется в другом месте вашего кода.

На самом деле, хук manage_edit-${post_type}_columns принимает аргумент $columns, который является массивом всех зарегистрированных колонок. Чтобы добавить новую колонку, просто добавьте новый элемент в этот массив, вот так:

add_filter('manage_edit-film_columns', 'my_columns');
function my_columns($columns) {
    $columns['views'] = 'Просмотры';
    return $columns;
}
10 мар. 2011 г. 04:39:10
Комментарии

Я знаю, как добавлять столбцы, но я не знаю, как отображать некоторые из них для пользовательского типа записей "фильмы", а другие — для типа "книги". Именно об этом и идет вопрос.

Wordpressor Wordpressor
10 мар. 2011 г. 13:49:28

О, я увидел, что вы сказали: "Я пробовал и manage_edit-books_columns, и manage_edit-movies_columns, и ничего не вышло", и подумал, что у вас проблема с добавлением столбцов. В любом случае, по ссылке, которую я предоставил, есть хороший пример с объяснением, как отображать содержимое в столбцах — вам стоит его прочитать.

Anh Tran Anh Tran
10 мар. 2011 г. 15:53:27

Я всё ещё не понимаю. Я использую два отдельных фильтра, но это вообще не помогает.

Wordpressor Wordpressor
11 мар. 2011 г. 21:53:25
0

Это даже проще, чем вы думаете.

У вас есть эти две функции в WordPress:

manage_posts_columns (обратите внимание на часть "posts")

и

manage_posts_custom_column (снова "posts")

У вас есть то же самое для страниц: "manage_page_posts_columns" и "manage_page_posts_custom_column" (обратите внимание на часть "page_posts")

Итак, если вам нужно добавить эти колонки для произвольного типа записи, вам нужно сделать следующее. Допустим, ваш тип записи называется "movie", тогда:

manage_movie_posts_columns()
manage_movie_posts_custom_column()

Обратите внимание на часть "movie_posts", поэтому вы видите что-то вроде "manage_{custom_type}_posts_columns" на страницах Codex.

Для типа "books":

manage_books_posts_columns()
manage_books_posts_custom_column()

И так далее... понятно?

30 окт. 2012 г. 14:13:55
0

Посмотрите, как выглядит параметр $arg для перезаписи вашего пользовательского типа записи.

Чтобы лучше видеть выводимые данные, просто сделайте следующее:

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

при запросе объекта типа записи.

10 мар. 2011 г. 04:05:05