web-dev-qa-db-ja.com

カスタム投稿タイプ - 機能タイプ

私は自分自身の目的のためにカスタム投稿タイププラグインを開発してきました、そして進む前にカスタム投稿タイプに関する機能をもう少し理解したいと思います。残念ながら、Wordpress Codexは私にはそれを解決しません。

カスタム投稿タイプに関して、実際にどのような機能が実行されているのかがわかりません。

たとえば、「book」というカスタム投稿タイプを作成し、「book」をcapability_typeとして使用すると、次の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_bookの機能を持つユーザーロールであれば、ランダム機能の権限も持つことができますか?

Bookとfantasy-bookの2つのカスタム投稿タイプを作成して試してみました。

私はそのrandom_capabilityに本を与えて、次にそのそのcapability_typeとして本を使うようにfantasy-bookに言いました。さて、私の理解はそれが本の能力(random_capabilityを含む)を引き出してその能力をファンタジー本に与えるだろうということです、正しいですか?

実際にはうまくいきません。ケーパビリティタイプは、あなたがそれに与えたどんなタイプのケーパビリティも引き出す​​べきであるか、あるいはそのタイプがまだ存在しないなら新しいケーパビリティを作成するべきであると私は感じます。

そうでなければ、それで私はcapability_typeがどのように機能するのかわかりませんし、これについて何も見つけることができませんでした。これに関する知識はありますか?

任意の助けは大歓迎です。

2
jasonaburton

コーデックスがこの問題に関して大きな助けにはならないことにあなたは同意します。 register_post_typeの下にあるケーパビリティについてのものをチェックしてください - それは真剣に書き直す必要があります。

私が理解しているように、pagepostだけがあなたが提案する方法で使うことができます(そして実際にpost定義済みの機能タイプがない場合はデフォルトで使用されます。

もちろん、bookという通常のキャップすべてを作成することで、自分のコードで、または membersなどのプラグインを通じて、自分のカスタム投稿タイプに固有の機能を割り当てることができます。

好きな機能を作成できますが、その段階でそれができるかどうかはわかりません。私がしがちなのは、ロールにカスタムキャップを割り当てることです。

$role = get_role( 'administrator' );
$role->add_cap( 'access_awesomeness' );

キャップはDBに書き込まれているので、おそらく プラグインのアクティベーション でこれを実行するでしょう。

あなたのプラグインは現在のユーザーがそれを使って何でもする権限を持っているかどうかをチェックできます:

if (current_user_can( 'access_awesomeness' )) { ...

他の権限を追加する場所でも使用できます。たとえば、

add_menu_page( $page_title, $menu_title, 'access_awesomeness', $menu_slug, $function, $icon_url, $position );

それがあなたの質問に完全に答えるかどうかはわかりませんが、それは私の2セントの価値です。

3
vancoder