WordPress поставляется со встроенной функциональностью, которая позволяет группировать сообщения или типы сообщений вместе. Эта функциональность называется таксономией , по умолчанию WordPress поставляется с двумя типами по умолчанию, есть категории и теги. Разница между категорией и тегом заключается в том, что категории можно сгруппировать в иерархии, чтобы у вас могли быть родительские категории.
Теги дают вам больше свободы, чем категории, вы можете легко добавлять новые теги, вводя их в текстовое поле тегов на экране поста. Обычно сообщение будет иметь несколько тегов, но только одну категорию.
На обычном блог-сайте, имеющем только категории и теги, достаточно функциональности для группировки ваших сообщений, но WordPress — это CMS, и его можно использовать для создания пользовательских типов сообщений . Эти новые типы записей могут не вписываться в ранее использовавшиеся вами таксономии, поэтому вам, возможно, придется создать новую таксономию, чтобы позволить вам группировать новые типы записей .
Начиная с WordPress 2.3 разработчики могут создавать свои собственные таксономии с помощью функции register_taxonomy () . Эта функция будет принимать 3 параметра: имя таксономии, тип должности для назначения таксономии и аргументы для определения таксономии.
<?php add_action( 'init', 'register_new_taxonomy' ); function register_new_taxonomy() { register_taxonomy( $taxonomy, $object_type, $args ); } ?>
- $ таксономия — название таксономии.
- $ object_type — это может быть строка или массив для типов записей для назначения пользовательской таксономии.
- $ args — Массив аргументов для определения пользовательской таксономии.
аргументы
Аргументы, которые вы можете определить для таксономии:
- label — множественное описательное имя для таксономии.
- метки — массив различных описательных имен для таксономии.
- public — логическое значение, если таксономия может быть замечена на пользовательском интерфейсе администратора.
- show_ui — логическое значение для создания пользовательского интерфейса по умолчанию в области администратора для таксономии.
- show_in_nav_menus — логическое значение, чтобы решить, можно ли добавить таксономию в навигационные меню.
- show_tagcloud — логическое значение, чтобы решить, можно ли использовать таксономию в облаке тегов.
- show_admin_column — логическое значение, позволяющее автоматически создавать столбцы таксономии для связанных типов записей.
- иерархический — логическое значение, определяющее, может ли таксономия быть иерархической.
- update_count_callback — имя функции, которая будет вызываться при подсчете связанного $ object_type.
- query_var — логическое значение, чтобы решить, можно ли использовать таксономию в query_var.
- rewrite — массив для определения правил перезаписи для таксономии.
- Возможности — Массив, чтобы определить возможности для таксономии.
- sort — логическое значение, чтобы запомнить порядок таксономии.
Основной пример
Ниже приведен базовый пример того, как вы можете использовать register_taxonomy () для создания своей собственной таксономии.
add_action( 'init', 'register_new_taxonomy' ); function register_new_taxonomy() { $labels = array( 'name' => _x( 'plural taxonomy', 'Taxonomy general name', 'text_domain' ), 'singular_name' => _x( 'single taxonomy', 'Taxonomy singular name', 'text_domain' ), 'search_items' => __( 'Search plural taxonomy', 'text_domain' ), 'popular_items' => __( 'Popular plural taxonomy', 'text_domain' ), 'all_items' => __( 'All plural taxonomy', 'text_domain' ), 'parent_item' => __( 'Parent single taxonomy', 'text_domain' ), 'parent_item_colon' => __( 'Parent single taxonomy', 'text_domain' ), 'edit_item' => __( 'Edit single taxonomy', 'text_domain' ), 'update_item' => __( 'Update single taxonomy', 'text_domain' ), 'add_new_item' => __( 'Add New single taxonomy', 'text_domain' ), 'new_item_name' => __( 'New single taxonomy Name', 'text_domain' ), 'add_or_remove_items' => __( 'Add or remove plural taxonomy', 'text_domain' ), 'choose_from_most_used' => __( 'Choose from most used plural taxonomy', 'text_domain' ), 'menu_name' => __( 'single taxonomy', 'text_domain' ), ); $args = array( 'labels' => $labels, 'public' => true, 'show_in_nav_menus' => true, 'hierarchical' => true, 'show_tagcloud' => true, 'show_ui' => true, 'query_var' => true, 'rewrite' => true, 'query_var' => true, 'capabilities' => '', ); register_taxonomy( 'taxonomy-id', array( 'post', 'custom-post-type' ), $args ); }