# get_post_type_capabilities()

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

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

## Сигнатура

```php
get_post_type_capabilities( object $args ): object
```

## Описание

Права доступа типа записи используют аргумент ‘capability_type’ в качестве основы, если право не задано в массиве аргумента ‘capabilities’ или если аргумент ‘capabilities’ не передан.
Аргумент capability_type можно при желании зарегистрировать как массив, где первое значение — единственного числа, а второе — множественного, например array(‘story’, ‘stories’). Иначе для формы множественного числа к значению будет добавлена ‘s’. После регистрации capability_type всегда представляет собой строку со значением единственного числа.
По умолчанию в составе массива capabilities принимаются следующие ключи:

edit_post, read_post и delete_post — это метаправа, которые затем обычно сопоставляются с соответствующими примитивными правами в зависимости от контекста, а именно редактируемой/читаемой/удаляемой записи и проверяемого пользователя или роли. Поэтому такие права обычно не назначаются пользователям или ролям напрямую.

edit_posts — управляет тем, можно ли редактировать объекты этого типа записи.

edit_others_posts — управляет тем, можно ли редактировать объекты этого типа, принадлежащие другим пользователям. Если тип записи не поддерживает автора, то ведёт себя как edit_posts.

delete_posts — управляет тем, можно ли удалять объекты этого типа записи.

publish_posts — управляет публикацией объектов этого типа записи.

read_private_posts — управляет тем, можно ли читать приватные объекты.

create_posts — управляет тем, можно ли создавать объекты этого типа записи.

Эти примитивные права проверяются в ядре в разных местах.
Существует также шесть других примитивных прав, на которые в ядре нет прямых ссылок, кроме как в map_meta_cap() , которая берёт три упомянутых выше метаправа и преобразует их в одно или несколько примитивных прав, которые затем должны проверяться для пользователя или роли в зависимости от контекста.

read — управляет тем, можно ли читать объекты этого типа записи.

delete_private_posts — управляет тем, можно ли удалять приватные объекты.

delete_published_posts — управляет тем, можно ли удалять опубликованные объекты.

delete_others_posts — управляет тем, можно ли удалять объекты, принадлежащие другим пользователям. Если тип записи не поддерживает автора, то ведёт себя как delete_posts.

edit_private_posts — управляет тем, можно ли редактировать приватные объекты.

edit_published_posts — управляет тем, можно ли редактировать опубликованные объекты.

Эти дополнительные права используются только в map_meta_cap() . Поэтому по умолчанию они назначаются только в том случае, если тип записи зарегистрирован с аргументом ‘map_meta_cap’, установленным в true (по умолчанию false).
См. alsoregister_post_type()

map_meta_cap()

## Параметры

- `$args` `object` — обязательный. Аргументы регистрации типа записи.

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

`object` — edit_post stringПраво редактировать запись. read_post stringПраво читать запись. delete_post stringПраво удалять запись. edit_posts stringПраво редактировать записи. edit_others_posts stringПраво редактировать чужие записи. delete_posts stringПраво удалять записи. publish_posts stringПраво публиковать записи. read_private_posts stringПраво читать приватные записи. create_posts stringПраво создавать записи. read stringНеобязательно. Право читать запись. delete_private_posts stringНеобязательно. Право удалять приватные записи. delete_published_posts stringНеобязательно. Право удалять опубликованные записи. delete_others_posts stringНеобязательно. Право удалять чужие записи. edit_private_posts stringНеобязательно. Право редактировать приватные записи. edit_published_posts stringНеобязательно. Право редактировать опубликованные записи.

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

Файл: `wp-includes/post.php:1995`

```php
function get_post_type_capabilities( $args ) {
	if ( ! is_array( $args->capability_type ) ) {
		$args->capability_type = array( $args->capability_type, $args->capability_type . 's' );
	}

	// Singular base for meta capabilities, plural base for primitive capabilities.
	list( $singular_base, $plural_base ) = $args->capability_type;

	$default_capabilities = array(
		// Meta capabilities.
		'edit_post'          => 'edit_' . $singular_base,
		'read_post'          => 'read_' . $singular_base,
		'delete_post'        => 'delete_' . $singular_base,
		// Primitive capabilities used outside of map_meta_cap():
		'edit_posts'         => 'edit_' . $plural_base,
		'edit_others_posts'  => 'edit_others_' . $plural_base,
		'delete_posts'       => 'delete_' . $plural_base,
		'publish_posts'      => 'publish_' . $plural_base,
		'read_private_posts' => 'read_private_' . $plural_base,
	);

	// Primitive capabilities used within map_meta_cap():
	if ( $args->map_meta_cap ) {
		$default_capabilities_for_mapping = array(
			'read'                   => 'read',
			'delete_private_posts'   => 'delete_private_' . $plural_base,
			'delete_published_posts' => 'delete_published_' . $plural_base,
			'delete_others_posts'    => 'delete_others_' . $plural_base,
			'edit_private_posts'     => 'edit_private_' . $plural_base,
			'edit_published_posts'   => 'edit_published_' . $plural_base,
		);
		$default_capabilities             = array_merge( $default_capabilities, $default_capabilities_for_mapping );
	}

	$capabilities = array_merge( $default_capabilities, $args->capabilities );

	// Post creation capability simply maps to edit_posts by default:
	if ( ! isset( $capabilities['create_posts'] ) ) {
		$capabilities['create_posts'] = $capabilities['edit_posts'];
	}

	// Remember meta capabilities for future reference.
	if ( $args->map_meta_cap ) {
		_post_type_meta_capabilities( $capabilities );
	}

	return (object) $capabilities;
}
```

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

- 5.4.0 — 'delete_posts' is included in default capabilities.
- 3.0.0 — Introduced.

## Связанные

Использует: [`_post_type_meta_capabilities`](https://chugunov.pro/api-wordpress/functions/_post_type_meta_capabilities/), [`map_meta_cap`](https://chugunov.pro/api-wordpress/functions/map_meta_cap/).
Используется в: `WP_Post_Type::set_props`, [`map_meta_cap`](https://chugunov.pro/api-wordpress/functions/map_meta_cap/).

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