Статьи

Создание собственной таксономии в WordPress

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