в Wordpress

WordPress: register_post_type и default taxonomies

Проблема

WordPress 3+ принес нам возможность создавать свои типы постов. Останавливаться на этом сейчас не буду, благо FAQ полно. Есть маленький нюанс, связанный с одной из опций метода register_post_type. Я столкнулся сегодня с тем, что при регистрации своего типа к нему не подключились категории. Решение оказалось тривиальным.

Решение

Вот код регистрации типа данных Course

  1. ‘course’‘labels’‘name’‘Courses’),
  2.                 ‘singular_name’‘Course’),
  3.                 ‘not_found’‘No courses found’),
  4.                 ‘not_found_in_trash’‘No courses found in Trash’),
  5.                 ‘edit_item’‘Edit Course’),
  6.                 ‘search_items’‘Search Courses’),
  7.                 ‘view_item’‘View Course’),
  8.                 ‘new_item’‘New Course’),
  9.                 ‘add_new’‘Add New’, ‘course’),
  10.                 ‘add_new_item’‘Add New Course’),
  11.             ),
  12.             ‘public’‘exclude_from_search’‘menu_position’            => 20,
  13.             ‘taxonomies’‘category’),
  14.             ‘supports’‘title’,
  15.                 ‘editor’,
  16.                 ‘page-attributes’,
  17.                 ‘custom-fields’
  18.             ),
  19.             ‘show_in_nav_menus’

Обратите внимание на строку 'taxonomies' => array('category'),. Казалось бы все правильно. Но в интерфейсе категории так и не появились.
Копнув по-глубже я обнаружил, что мой код вызывается раньше кода регистрации taxonomy Category.
Проблему решило заключение кода в функцию и добавление action’a в точку init

  1. ‘init’, ‘initCustomPostTypes’//Courses
  2. ‘course’‘labels’‘name’‘Courses’),
  3.                 ‘singular_name’‘Course’),
  4.                 ‘not_found’‘No courses found’),
  5.                 ‘not_found_in_trash’‘No courses found in Trash’),
  6.                 ‘edit_item’‘Edit Course’),
  7.                 ‘search_items’‘Search Courses’),
  8.                 ‘view_item’‘View Course’),
  9.                 ‘new_item’‘New Course’),
  10.                 ‘add_new’‘Add New’, ‘course’),
  11.                 ‘add_new_item’‘Add New Course’),
  12.             ),
  13.             ‘public’‘exclude_from_search’‘menu_position’            => 20,
  14.             ‘taxonomies’‘category’),
  15.             ‘supports’‘title’,
  16.                 ‘editor’,
  17.                 ‘page-attributes’,
  18.                 ‘custom-fields’
  19.             ),
  20.             ‘show_in_nav_menus’
  • Kraker10

    спасибо большое