функция since 3.0.0

get_post_type_capabilities()

Проверено на WordPress 6.9, обновлено Источник: WordPress Developer Resources.

Сигнатура

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()

Оригинал (английский)

Post type capabilities use the ‘capability_type’ argument as a base, if the capability is not set in the ‘capabilities’ argument array or if the ‘capabilities’ argument is not supplied.

The capability_type argument can optionally be registered as an array, with the first value being singular and the second plural, e.g. array(‘story, ‘stories’) Otherwise, an ‘s’ will be added to the value for the plural form. After registration, capability_type will always be a string of the singular value.

By default, the following keys are accepted as part of the capabilities array:

  • edit_post, read_post, and delete_post are meta capabilities, which are then generally mapped to corresponding primitive capabilities depending on the context, which would be the post being edited/read/deleted and the user or role being checked. Thus these capabilities would generally not be granted directly to users or roles.

  • edit_posts – Controls whether objects of this post type can be edited.

  • edit_others_posts – Controls whether objects of this type owned by other users can be edited. If the post type does not support an author, then this will behave like edit_posts.

  • delete_posts – Controls whether objects of this post type can be deleted.

  • publish_posts – Controls publishing objects of this post type.

  • read_private_posts – Controls whether private objects can be read.

  • create_posts – Controls whether objects of this post type can be created.

These primitive capabilities are checked in core in various locations.
There are also six other primitive capabilities which are not referenced directly in core, except in map_meta_cap() , which takes the three aforementioned meta capabilities and translates them into one or more primitive capabilities that must then be checked against the user or role, depending on the context.

  • read – Controls whether objects of this post type can be read.
  • delete_private_posts – Controls whether private objects can be deleted.
  • delete_published_posts – Controls whether published objects can be deleted.
  • delete_others_posts – Controls whether objects owned by other users can be can be deleted. If the post type does not support an author, then this will behave like delete_posts.
  • edit_private_posts – Controls whether private objects can be edited.
  • edit_published_posts – Controls whether published objects can be edited.

These additional capabilities are only used in map_meta_cap() . Thus, they are only assigned by default if the post type is registered with the ‘map_meta_cap’ argument set to true (default is false).

See also

Параметры

$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

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.

Что будем искать? Например,Продвижение

Этот сайт использует куки-файлы. Оставаясь на сайте, Вы соглашаетесь на их использование. Для получения дополнительной информации, пожалуйста, ознакомьтесь с политикой в отношении персональных данных.