get_post_type_capabilities

函式
get_post_type_capabilities ( $args )
引數
  • (object) $args Post type registration arguments.
    Required:
返回值
  • (object) Object with all the capabilities as member variables.
相關
  • register_post_type()
  • map_meta_cap()
定義位置
相關方法
_post_type_meta_capabilitiesget_post_type_labelsget_post_typesget_post_type_objectget_post_type_archive_link
引入
3.0.0
棄用
-

get_post_type_capabilities函式是WordPress的一個函式,用於檢索指定文章型別的許可權選項: 這個函式把文章型別的名稱作為引數,並返回一個許可權選項的陣列。

從一個文章型別物件中建立一個具有所有文章型別許可權的物件

如果許可權沒有在’capabilities’引數陣列中設定,或者沒有提供’capabilities’引數,那麼文章型別許可權使用’capacity_type’引數作為基礎。

capability_type引數可以選擇註冊為一個陣列,第一個值是單數,第二個是複數,例如array(‘story, ‘stories’) 否則,複數形式的值會被加上一個’s’。註冊後,capacity_type將始終是一個單數值的字串。

預設情況下,八個鍵被接受為許可權陣列的一部分。

– edit_post、read_post和delete_post是元許可權,然後根據上下文,即被編輯/閱讀/刪除的文章和被檢查的使用者或角色,一般會被對映到相應的原始許可權。因此,這些許可權一般不會直接授予使用者或角色。

– edit_posts – 控制這個文章型別的物件是否可以被編輯。
– edit_others_posts – 控制是否可以編輯其他使用者擁有的這種型別的物件。如果文章型別不支援作者,那麼這將與 edit_posts 的行為類似。
– delete_posts – 控制是否可以刪除這個文章型別的物件。
– publish_posts – 控制釋出該文章型別的物件。
– read_private_posts – 控制是否可以讀取私有物件。

這五個原始許可權在核心區的不同位置都有檢查。還有其他六種原始許可權,除了map_meta_cap()外,沒有在核心中直接引用,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),它們才會被預設分配。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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;
}
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; }
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;
}

常見問題

FAQs
檢視更多 >