自定义发布类型-功能类型

时间:2013-07-04 作者:jasonaburton

我一直在为自己的目的开发一个自定义帖子类型插件,我想在前进之前更好地了解自定义帖子类型的功能。不幸的是,Wordpress Codex并没有真正为我澄清。

我只是不明白定制帖子类型的实际功能是什么。

例如,当我创建一个名为“book”的自定义post类型并使用“book”作为capability\\u类型时,它会生成以下7个基本功能:

[edit_post]          => edit_book
[read_post]          => read_book
[delete_post]        => delete_book
[edit_posts]         => edit_books
[edit_others_posts]  => edit_others_books
[publish_posts]      => publish_books
[read_private_posts] => read_private_books
现在,我可以创建任何我喜欢的功能吗?例如,我可以这样做:

[random_capability]  => edit_book
因此,任何具有edit\\u book功能的用户角色也可以具有随机功能的权限?

我尝试过创建两种自定义帖子类型:book和fantasy book。

我给这本书提供了random\\u功能,然后告诉幻想书使用这本书作为它的capability\\u类型。现在,我的理解是,它将获取书本功能(包括random\\u功能),并将该功能赋予幻想书,对吗?

实际上,这是行不通的。我觉得capability\\u type应该提取您提供的任何类型的功能,或者如果所述类型尚不存在,则创建新的功能。

如果没有,那么我不知道capability\\u type是如何工作的,也没有找到任何关于这方面的信息。有人知道这件事吗?

非常感谢您的帮助。

1 个回复
最合适的回答,由SO网友:vancoder 整理而成

我同意你的观点,在这个问题上,法典并没有很大的帮助。查看下面关于功能的内容register_post_type - 它需要认真重写。

据我所知,只有page和post可以按照您的建议使用(事实上,在没有定义的功能类型的情况下,默认情况下使用post)。

当然,通过创建所有常用CAP的书籍版本,您可以在自己的代码中或通过插件(如members.

你可以创建任何你喜欢的功能,但我不确定你在那个阶段能做到。我倾向于为角色分配一个自定义上限:

$role = get_role( \'administrator\' );
$role->add_cap( \'access_awesomeness\' );
我可能会在plugin activation, 既然caps被写入DB,那么为什么要多次这样做呢。

然后,您的插件可以检查当前用户是否有权对其执行任何操作:

if (current_user_can( \'access_awesomeness\' )) { ...
您还可以在添加任何其他权限的地方使用它,例如:

add_menu_page( $page_title, $menu_title, \'access_awesomeness\', $menu_slug, $function, $icon_url, $position );
我不确定这是否完全回答了你的问题,但那是我的2美分。

结束

相关推荐

PHP致命错误:无法为wp-includes/capabilities.php中的非对象调用重载函数

我在apache日志中遇到了太多以下错误。PHP Fatal error: Cannot call overloaded function for non-object in wp-includes/capabilities.php on line 1187这是函数current\\u user\\u can($capability)的内部,第1187行如下所示:$current_user = wp_get_current_user(); 我不知道问题出在哪里?