たとえば、 "destination"という投稿タイプを作成した場合、 "edit_destinations"や "delete_destinations"などの機能が自動的に作成されますか?
WordPressに新しい機能が登録されていないという意味で、その機能が自動的に作成されることはありません。代わりに、投稿の作成/編集に割り当てられている機能をデフォルトで使用します。たとえば、作成者がログインした場合、デフォルトで新しい作成者エントリを作成して公開できます。
register_post_type
を使用するときは、これをcapabilities
値でオーバーライドできます。 Justin Tadlockのすばらしいチュートリアルはこちら http://justintadlock.com/archives/2010/04/29/custom-post-types-in-wordpress
カスタム投稿タイプの中央変数を定義します:public $post_type_1 = 'archiv';
そしてこれを使って新しい機能を追加しましょう。
$capabilities = array(
'edit_post' => 'edit_' . $this->post_type_1,
'edit_posts' => 'edit_' . $this->post_type_1 . 's',
'edit_others_posts' => 'edit_others_' . $this->post_type_1 . 's',
'publish_posts' => 'publish_' . $this->post_type_1 . 's',
'read_post' => 'read_' . $this->post_type_1,
'read_private_posts' => 'read_private_' . $this->post_type_1 . 's',
'delete_post' => 'delete_' . $this->post_type_1
);
また、プラグインをアクティブにしたときにのみ、この新しいCapabiltiesオブジェクトを別のデフォルトロールに追加します。
foreach ( $this->todo_roles as $role ) {
$wp_roles->add_cap( $role, 'edit_' . $this->post_type_1 );
$wp_roles->add_cap( $role, 'edit_' . $this->post_type_1 . 's' );
$wp_roles->add_cap( $role, 'edit_others_' . $this->post_type_1 . 's' );
$wp_roles->add_cap( $role, 'publish_' . $this->post_type_1 . 's' );
$wp_roles->add_cap( $role, 'read_' . $this->post_type_1 );
$wp_roles->add_cap( $role, 'read_private_' . $this->post_type_1 . 's' );
$wp_roles->add_cap( $role, 'delete_' . $this->post_type_1 );
$wp_roles->add_cap( $role, 'manage_' . $this->taxonomy_type_1 );
}
foreach ( $this->read_roles as $role ) {
$wp_roles->add_cap( $role, 'read_' . $this->post_type_1 );
$wp_roles->add_cap( $role, 'read_' . $this->post_type_1 );
$wp_roles->add_cap( $role, 'read_' . $this->post_type_1 );
}
global $wp_rewrite;
$wp_rewrite->flush_rules();
ただし、プラグインをアンインストールする場合は、このオブジェクトの登録も解除する必要があります。
この要旨の例を見ることができます: https://Gist.github.com/978690