Описание
Добавляет новую или переписывает существующую таксономию. Функция ничего не возвращает.
Важно, что в качестве названия для новой таксономии нужно указывать уникальное имя, отличное от уже имеющихся таксономий, типов постов и зарезервированных WordPress публичных и частных переменных. Полных список названий которые не могут быть использованы как имя новой таксономии описан ниже.
Использование
<?php register_taxonomy($taxonomy, $object_type, $args); ?>
Функцию нужно вызывать через хук "init" (add_action( 'init', 'function_name', 0 );).
Параметры по умолчанию
// заголовки
$labels = array(
'name' => 'Genres'
,'singular_name' => 'Genre'
,'search_items' => 'Search Genres'
,'all_items' => 'All Genres'
,'parent_item' => 'Parent Genre'
,'parent_item_colon' => 'Parent Genre:'
,'edit_item' => 'Edit Genre'
,'update_item' => 'Update Genre'
,'add_new_item' => 'Add New Genre'
,'new_item_name' => 'New Genre Name'
,'menu_name' => 'Genre'
);
$args = array(
'label' => '' // определяется параметром $labels->name
,'labels' => $labels
,'public' => true
,'show_in_nav_menus' => true // равен аргументу public
,'show_ui' => true // равен аргументу public
,'show_tagcloud' => true // равен аргументу show_ui
,'hierarchical' => false
,'update_count_callback' => ''
,'rewrite' => true
,'query_var' => ''
,'capabilities' => array()
,'_builtin' => false
);
register_taxonomy('', '', $args);
Параметры
- $taxonomy (строка) (обязательный)
- Название создаваемой таксономии.
По умолчанию: '' - $object_type (строка/массив) (обязательный)
- Название типов объектов, к которым будет привязана таксономия. В этом параметре, например, можно указать 'post', тогда у обычных постов WordPress появится новая таксономия (возможность классификации).
По умолчанию: '' - $args (строка/массив/число/объект/логический) (обязательный)
- Массив аргументов определяющий признаки таксономии.
По умолчанию: нет
Аргументы параметра $args
- label (строка)
- Название таксономии во множественном числе (для отображения в админке).
По умолчанию: используется значение аргумента $labels->name - labels (массив)
- Массив описывающий заголовки таксономии (для отображения в админке). По умолчанию используются заголовки "меток" для не древовидных типов таксономий и заголовки "категорий" для древовидных таксономий.
- name - имя таксономии, обычно во множественном числе. По умолчанию _x( 'Post Tags', 'taxonomy general name' ) или _x( 'Categories', 'taxonomy general name' );
- singular_name - название для одного элемента этой таксономии. По умолчанию _x( 'Post Tag', 'taxonomy singular name' ) или _x( 'Category', 'taxonomy singular name' );
- search_items - текст для поиска элемента таксономии. По умолчанию __( 'Search Tags' ) или __( 'Search Categories' );
- popular_items - текст для блока популярных элементов. __( 'Popular Tags' ) или null;
- all_items - текст для всех элементов. __( 'All Tags' ) или __( 'All Categories' );
- parent_item - текст для родительского элемента таксономии. Этот аргумент не используется для не древовидных таксономий. По умолчанию null или __( 'Parent Category' );
- parent_item_colon - текст для родительского элемента таксономии, тоже что и parent_item но с двоеточием в конце. По умолчанию нет или __( 'Parent Category:' );
- edit_item - текст для редактирования элемента. По умолчанию __( 'Edit Tag' ) или __( 'Edit Category' );
- update_item - текст для обновления элемента. По умолчанию __( 'Update Tag' ) или __( 'Update Category' );
- add_new_item - текст для добавления нового элемента таксономии. По умолчанию __( 'Add New Tag' ) или __( 'Add New Category' );
- new_item_name - текст для создания нового элемента таксономии. По умолчанию __( 'New Tag Name' ) или __( 'New Category Name' );
- separate_items_with_commas - текст описывающий, что элементы нужно разделять запятыми (для блога в админке). Не работает для древовидного типа. По умолчанию __( 'Separate tags with commas' ) или null;
- add_or_remove_items - текст для "удаления или добавления элемента", который используется в блоке админке, при отключенном javascript. Не действует для древовидных таксономий. По умолчанию __( 'Add or remove tags' ) или null;
- choose_from_most_used - текст для блога при редактировании поста "выберите из часто используемых". Не используется для древовидных таксономий. По умолчанию __( 'Choose from the most used tags' ) или null;
- menu_name - текст для названия меню. По умолчанию равно параметру name.
По умолчанию: заголовки меток/категорий
- public (логический)
- Показывать ли эту таксономию в интерфейсе админ-панели.
По умолчанию: true - show_in_nav_menus (логический)
- true даст возможность выбирать элементы этой таксономии в навигационном меню.
По умолчанию: если нет, равно аргументу public - show_ui (логический)
- Показывать блок управления этой таксономией в админке.
По умолчанию: если нет, равно аргументу public - show_tagcloud (логический)
- Создать виджет облако элеметнов этой таксономии (как облако меток).
По умолчанию: если нет, равно аргументу show_ui - hierarchical (логический)
- true - эта таксономия древовидного типа (как категории). flase - не древовидного (как мтеки).
По умолчанию: false - update_count_callback (строка)
- Название функции, которая будет вызываться для обновления количества записей в данной таксономии, для типа(ов) записей которые ассоциированы с этой таксономией.
По умолчанию: нет - rewrite (массив/логический)
- false - выключит перезапись. Если указать массив, то можно задать произвольный параметр запроса (query var). По умолчанию будет использоваться параметр $taxonomy.
Аргументы массива:- slug - предваряет посты этой строкой. По умолчанию название таксономии;
- with_front - позволяет установить префикс для постоянной ссылки, по умолчанию true;
- hierarchical - true или false включает древовидные УРЛы (с версии 3.1).
По умолчанию: true
- query_var (строка/логический)
- false - выключит запросы или указываем строку, чтобы изменить параметр запроса (query var). По умолчанию будет использоваться параметр $taxonomy.
По умолчанию: $taxonomy - capabilities (массив)
- Массив прав для этой таксономии:
- manage_terms - 'manage_categories'
- edit_terms - 'manage_categories'
- delete_terms - 'manage_categories'
- assign_terms - 'edit_posts'
По умолчанию: нет
- _builtin (логический) (не для обычного использования)
- Параметр предназначен для разработчиков. Если переключить на true, то это будет означать что эта таксономия относится к внутренним таксономия WordPress и не является встроенной (кастомной).
По умолчанию: false
Примеры
1. Пример регистрации двух таксономий "genres" и "writers" для постов типа "book". Этот код можно вставить в файл темы functions.php. Некоторые аргументы рассчитаны на версию 3.1+:
// хук через который подключается функция
// регистрирующая новые таксономии (create_book_taxonomies)
add_action( 'init', 'create_book_taxonomies', 0 );
// функция, создающая 2 новые таксономии "genres" и "writers" для постов типа "book"
function create_book_taxonomies(){
// определяем заголовки для 'genre'
$labels = array(
'name' => _x( 'Genres', 'taxonomy general name' ),
'singular_name' => _x( 'Genre', 'taxonomy singular name' ),
'search_items' => __( 'Search Genres' ),
'all_items' => __( 'All Genres' ),
'parent_item' => __( 'Parent Genre' ),
'parent_item_colon' => __( 'Parent Genre:' ),
'edit_item' => __( 'Edit Genre' ),
'update_item' => __( 'Update Genre' ),
'add_new_item' => __( 'Add New Genre' ),
'new_item_name' => __( 'New Genre Name' ),
'menu_name' => __( 'Genre' ),
);
// Добавляем древовидную таксономию 'genre' (как категории)
register_taxonomy('genre', array('book'), array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'genre' ),
));
// определяем заголовки для 'writer'
$labels = array(
'name' => _x( 'Writers', 'taxonomy general name' ),
'singular_name' => _x( 'Writer', 'taxonomy singular name' ),
'search_items' => __( 'Search Writers' ),
'popular_items' => __( 'Popular Writers' ),
'all_items' => __( 'All Writers' ),
'parent_item' => null,
'parent_item_colon' => null,
'edit_item' => __( 'Edit Writer' ),
'update_item' => __( 'Update Writer' ),
'add_new_item' => __( 'Add New Writer' ),
'new_item_name' => __( 'New Writer Name' ),
'separate_items_with_commas' => __( 'Separate writers with commas' ),
'add_or_remove_items' => __( 'Add or remove writers' ),
'choose_from_most_used' => __( 'Choose from the most used writers' ),
'menu_name' => __( 'Writers' ),
);
// Добавляем НЕ древовидную таксономию 'writer' (как метки)
register_taxonomy('writer', 'book',array(
'hierarchical' => false,
'labels' => $labels,
'show_ui' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'writer' ),
));
}
Зарезервированные названия
attachment
attachment_id
author
author_name
calendar
cat
category_name
category__and
category__in
category__not_in
comments_per_page
comments_popup
cpage
day
debug
error
exact
feed
hour
link
minute
monthnum
more
name
nav_menu
nopaging
offset
order
orderby
p
page
paged
pagename
page_id
pb
perm
post
posts
posts_per_archive_page
posts_per_page
post_format
post_mime_type
post_status
post_type
preview
robots
s
search
second
sentence
showposts
static
subpost
subpost_id
tag
tag_id
tag_slug__and
tag_slug__in
tag__and
tag__in
tag__not_in
taxonomy
tb
term
type
w
withcomments
withoutcomments
year
register_taxonomy()
из файла: /wp-includes/taxonomy.php WP 3.3.2function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
global $wp_taxonomies, $wp_rewrite, $wp;
if ( ! is_array($wp_taxonomies) )
$wp_taxonomies = array();
$defaults = array( 'hierarchical' => false,
'update_count_callback' => '',
'rewrite' => true,
'query_var' => $taxonomy,
'public' => true,
'show_ui' => null,
'show_tagcloud' => null,
'_builtin' => false,
'labels' => array(),
'capabilities' => array(),
'show_in_nav_menus' => null,
);
$args = wp_parse_args($args, $defaults);
if ( false !== $args['query_var'] && !empty($wp) ) {
if ( true === $args['query_var'] )
$args['query_var'] = $taxonomy;
$args['query_var'] = sanitize_title_with_dashes($args['query_var']);
$wp->add_query_var($args['query_var']);
}
if ( false !== $args['rewrite'] && '' != get_option('permalink_structure') ) {
$args['rewrite'] = wp_parse_args($args['rewrite'], array(
'slug' => sanitize_title_with_dashes($taxonomy),
'with_front' => true,
'hierarchical' => false
));
if ( $args['hierarchical'] && $args['rewrite']['hierarchical'] )
$tag = '(.+?)';
else
$tag = '([^/]+)';
$wp_rewrite->add_rewrite_tag("%$taxonomy%", $tag, $args['query_var'] ? "{$args['query_var']}=" : "taxonomy=$taxonomy&term=");
$wp_rewrite->add_permastruct($taxonomy, "{$args['rewrite']['slug']}/%$taxonomy%", $args['rewrite']['with_front']);
}
if ( is_null($args['show_ui']) )
$args['show_ui'] = $args['public'];
// Whether to show this type in nav-menus.php. Defaults to the setting for public.
if ( null === $args['show_in_nav_menus'] )
$args['show_in_nav_menus'] = $args['public'];
if ( is_null($args['show_tagcloud']) )
$args['show_tagcloud'] = $args['show_ui'];
$default_caps = array(
'manage_terms' => 'manage_categories',
'edit_terms' => 'manage_categories',
'delete_terms' => 'manage_categories',
'assign_terms' => 'edit_posts',
);
$args['cap'] = (object) array_merge( $default_caps, $args['capabilities'] );
unset( $args['capabilities'] );
$args['name'] = $taxonomy;
$args['object_type'] = array_unique( (array)$object_type );
$args['labels'] = get_taxonomy_labels( (object) $args );
$args['label'] = $args['labels']->name;
$wp_taxonomies[$taxonomy] = (object) $args;
// register callback handling for metabox
add_filter('wp_ajax_add-' . $taxonomy, '_wp_ajax_add_hierarchical_term');
do_action( 'registered_taxonomy', $taxonomy, $object_type, $args );
}Связанные Функции
Ещё из раздела
Смотрите также: Функции WordPress и Теги Шаблона.
Для многих эта заметка принесет мало пользы, как говорится: "баян icq скачать бесплатно на компьютер", однако icq весьма популярный мессенджер, который определенно заслуживает место на каждом компьютере, к тому же, если вы по каким-то причинам еще не знакомы с icq, то обязательно познакомьтесь!

Про rewrite можете чуток более подробней написать, что он делает?)