capabilities<不需要,因为(数组)(可选)此post类型的功能数组默认:capability\\u type用于构造以上是关于代码更改的澄清。除此之外,我还添加了一个调试部分,打印$GLOBALS[\'wp_post_types\'][\'bounty_product\']
, 因为就像《法典参考》中提到的那样:
如果您分配一个“capability\\u type”,然后查看$GLOBALS[\'wp\\u post\\u types\'][\'your\\u cpt\\u name\']数组,那么您将看到(…)
中的功能[cap] => stdClass Object ( ... )
部分
Code:
add_action( \'init\', \'pt_bounty_product\');
function pt_bounty_product() {
register_post_type( \'bounty_product\', array(
\'labels\' => array(
\'name\' => \'Products\',
\'singular_name\' => \'Product\',
\'add_new\' => \'Add New\',
\'add_new_item\' => \'Add New Product\',
\'edit\' => \'Edit\',
\'edit_item\' => \'Edit Product\',
\'new_item\' => \'New Product\',
\'view\' => \'View\',
\'view_item\' => \'View Product\',
\'search_items\' => \'Search Products\',
\'not_found\' => \'No Products found\',
\'not_found_in_trash\' => \'No Products found in Trash\',
\'parent\' => \'Parent Product\'),
\'description\' => \'Used for the product review section\',
\'public\' => true,
\'capability_type\' => array(\'bounty_product\',\'bounty_products\'),
\'map_meta_cap\' => true,
\'show_in_menu\' => true,
\'menu_position\' => 20,
\'has_archive\' => true,
\'supports\' => array( \'title\', \'editor\', \'comments\', \'thumbnail\', \'custom-fields\' ),
));
// uncomment /** like this /**/
/**
echo \'<pre>\';
print_r($GLOBALS[\'wp_post_types\'][\'www_product\']);
echo \'</pre>\';
/**/
}
法典:register_post_type()您必须取消注释才能看到这些功能与post类型相关联。如果可以看到它们,则意味着post类型初始化和自定义功能可以正常工作。But 正如我在一开始所说的,似乎必须手动将功能分配给相应的用户角色。
下面显示了一种先解决问题的方法(至少对于管理员角色而言)
Code:
add_action( \'init\', \'add_bounty_product_caps_admin\');
function add_bounty_product_caps_admin() {
$role = get_role( \'administrator\' );
$role->add_cap( \'edit_bounty_product\' );
$role->add_cap( \'edit_bounty_products\' );
$role->add_cap( \'edit_others_bounty_products\' );
$role->add_cap( \'publish_bounty_products\' );
$role->add_cap( \'read_bounty_product\' );
$role->add_cap( \'read_private_bounty_products\' );
$role->add_cap( \'delete_bounty_product\' );
$role->add_cap( \'edit_published_bounty_products\' );
$role->add_cap( \'delete_published_bounty_products\' );
}
资料来源:https://stackoverflow.com/a/18342740/2505105
法典:get_role() | add_cap现在,您应该能够以管理员角色的用户身份查看、添加、编辑新的帖子类型。您可以复制、更改或添加这些功能,以将功能分配给其他角色。
我决定展示第二种方法,即有点不同的方法,即如何将功能分配给用户角色
Code:
add_action( \'init\', \'add_bounty_product_caps\');
function add_bounty_product_caps() {
global $wp_roles;
if ( isset($wp_roles) ) {
$wp_roles->add_cap( \'administrator\', \'edit_bounty_product\' );
$wp_roles->add_cap( \'administrator\', \'read_bounty_product\' );
$wp_roles->add_cap( \'administrator\', \'delete_bounty_product\' );
$wp_roles->add_cap( \'administrator\', \'publish_bounty_products\' );
$wp_roles->add_cap( \'administrator\', \'edit_bounty_products\' );
$wp_roles->add_cap( \'administrator\', \'edit_others_bounty_products\' );
$wp_roles->add_cap( \'administrator\', \'delete_bounty_products\' );
$wp_roles->add_cap( \'administrator\', \'delete_others_bounty_products\' );
$wp_roles->add_cap( \'administrator\', \'read_private_bounty_products\' );
$wp_roles->add_cap( \'editor\', \'read_bounty_product\' );
$wp_roles->add_cap( \'editor\', \'read_private_bounty_products\' );
$wp_roles->add_cap( \'author\', \'read_bounty_product\' );
$wp_roles->add_cap( \'author\', \'read_private_bounty_products\' );
$wp_roles->add_cap( \'contributor\', \'read_bounty_product\' );
$wp_roles->add_cap( \'contributor\', \'read_private_bounty_products\' );
}
}
资料来源:http://isabelcastillo.com/assign-custom-post-type-capabilities-roles-wordpress
法典:add_cap不要重复分配功能。以上方法都是示例性的,您必须决定如何以何种方式使用它们。
最后一个补充是如何创建特定的用户角色
Code:
add_action(\'init\', \'bounty_product_author_user_role\');
function bounty_product_author_user_role() {
add_role(\'bounty_product_author\', \'Bounty Product Author\',
array (
\'edit_bounty_product\' => true,
\'delete_bounty_product\' => true,
\'read_bounty_product\' => true,
\'publish_bounty_products\' => true,
\'edit_bounty_products\' => true,
\'edit_others_bounty_products\' => true,
\'delete_bounty_products\' => true,
\'delete_others_bounty_products\' => true,
\'read_private_bounty_products\' => true,
// more standard capabilities here
\'read\' => true,
)
);
}
资料来源:http://wp-snppts.com/create-a-custom-post-type-and-define-custom-role-capabilities法典:add_role()
请记住,以上内容是典型的,因此您应该根据需要进行调整。要完全理解不同的部分,您可能需要阅读源代码和codex链接,并不是说它们涵盖了您所能了解的所有内容,而是应该让您开始阅读
编辑:
可在codex页面找到可用功能的概述:Roles and Capabilities.