# register_taxonomy()

URL: https://chugunov.pro/api-wordpress/functions/register_taxonomy/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 5.9.0.

## Сигнатура

```php
register_taxonomy( string $taxonomy, array|string $object_type, array|string $args = array() ): WP_Taxonomy|WP_Error
```

## Описание

Примечание: не используйте до хука «init».
Простая функция для создания или изменения объекта таксономии на основе переданных параметров. При изменении существующего объекта таксономии учтите, что значение $object_type из исходной регистрации будет перезаписано.

## Параметры

- `$taxonomy` `string` — обязательный. Ключ таксономии. Не должен превышать 32 символов и может содержать только строчные буквенно-цифровые символы, дефисы и подчёркивания. См. sanitize_key() .
- `$object_type` `array|string` — обязательный. Тип объекта или массив типов объектов, с которыми должна быть связана таксономия.

## Возвращаемое значение

`WP_Taxonomy|WP_Error` — WP_Error

## Исходный код

Файл: `wp-includes/taxonomy.php:518`

```php
function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
	global $wp_taxonomies;

	if ( ! is_array( $wp_taxonomies ) ) {
		$wp_taxonomies = array();
	}

	$args = wp_parse_args( $args );

	if ( empty( $taxonomy ) || strlen( $taxonomy ) > 32 ) {
		_doing_it_wrong( __FUNCTION__, __( 'Taxonomy names must be between 1 and 32 characters in length.' ), '4.2.0' );
		return new WP_Error( 'taxonomy_length_invalid', __( 'Taxonomy names must be between 1 and 32 characters in length.' ) );
	}

	$taxonomy_object = new WP_Taxonomy( $taxonomy, $object_type, $args );
	$taxonomy_object->add_rewrite_rules();

	$wp_taxonomies[ $taxonomy ] = $taxonomy_object;

	$taxonomy_object->add_hooks();

	// Add default term.
	if ( ! empty( $taxonomy_object->default_term ) ) {
		$term = term_exists( $taxonomy_object->default_term['name'], $taxonomy );
		if ( $term ) {
			update_option( 'default_term_' . $taxonomy_object->name, $term['term_id'] );
		} else {
			$term = wp_insert_term(
				$taxonomy_object->default_term['name'],
				$taxonomy,
				array(
					'slug'        => sanitize_title( $taxonomy_object->default_term['slug'] ),
					'description' => $taxonomy_object->default_term['description'],
				)
			);

			// Update `term_id` in options.
			if ( ! is_wp_error( $term ) ) {
				update_option( 'default_term_' . $taxonomy_object->name, $term['term_id'] );
			}
		}
	}

	/**
	 * Fires after a taxonomy is registered.
	 *
	 * @since 3.3.0
	 *
	 * @param string       $taxonomy    Taxonomy slug.
	 * @param array|string $object_type Object type or array of object types.
	 * @param array        $args        Array of taxonomy registration arguments.
	 */
	do_action( 'registered_taxonomy', $taxonomy, $object_type, (array) $taxonomy_object );

	/**
	 * Fires after a specific taxonomy is registered.
	 *
	 * The dynamic portion of the filter name, `$taxonomy`, refers to the taxonomy key.
	 *
	 * Possible hook names include:
	 *
	 *  - `registered_taxonomy_category`
	 *  - `registered_taxonomy_post_tag`
	 *
	 * @since 6.0.0
	 *
	 * @param string       $taxonomy    Taxonomy slug.
	 * @param array|string $object_type Object type or array of object types.
	 * @param array        $args        Array of taxonomy registration arguments.
	 */
	do_action( "registered_taxonomy_{$taxonomy}", $taxonomy, $object_type, (array) $taxonomy_object );

	return $taxonomy_object;
}
```

## История изменений

- 5.9.0 — Introduced rest_namespace argument.
- 5.5.0 — Introduced default_term argument.
- 5.4.0 — Added the registered taxonomy object as a return value.
- 5.1.0 — Introduced meta_box_sanitize_cb argument.
- 4.7.0 — Introduced show_in_rest, 'rest_base' and 'rest_controller_class' arguments to register the taxonomy in REST API.
- 4.5.0 — Introduced publicly_queryable argument.
- 4.4.0 — The public argument now controls whether the taxonomy can be queried on the front end.
- 4.2.0 — Introduced show_in_quick_edit argument.
- 2.3.0 — Introduced.

## Связанные

Использует: `WP_Taxonomy::__construct`, [`sanitize_title`](https://chugunov.pro/api-wordpress/functions/sanitize_title/), [`wp_insert_term`](https://chugunov.pro/api-wordpress/functions/wp_insert_term/), [`term_exists`](https://chugunov.pro/api-wordpress/functions/term_exists/), [`__`](https://chugunov.pro/api-wordpress/functions/__/), [`_doing_it_wrong`](https://chugunov.pro/api-wordpress/functions/_doing_it_wrong/), [`wp_parse_args`](https://chugunov.pro/api-wordpress/functions/wp_parse_args/), [`do_action`](https://chugunov.pro/api-wordpress/functions/do_action/), [`update_option`](https://chugunov.pro/api-wordpress/functions/update_option/), [`is_wp_error`](https://chugunov.pro/api-wordpress/functions/is_wp_error/), `WP_Error::__construct`.
Используется в: [`create_initial_taxonomies`](https://chugunov.pro/api-wordpress/functions/create_initial_taxonomies/).

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/register_taxonomy/
