###質問
固定ページタイプのカスタム投稿タイプを作成します。
権限を独自につくり、そのカスタム投稿タイプで投稿や編集をするには、独自の権限グループに属さないといけないようにします。
...ということをやろうとしています。
カスタム投稿タイプをつくるだけなら、以前やったことがあるのでわかるのですが、
そのときにregister_post_typeの引数の"capability_type"を'post'に指定すれば投稿ページタイプ、
'page'に指定すれば固定ページタイプになると勉強した記憶があります。
ところが、独自権限をつくるためにもこの"capability_type"を指定しないといけないということらしいのですが、
どうにも理解ができないことが一点あります。
▼カスタム投稿タイプにオリジナルの権限を設定する方法
▼関数リファレンス/get post type capabilities
上記サイトなどを参考にしているのですが、capability_typeにカスタム投稿タイプ名を指定するように書いています。
単純な疑問として、仮にカスタム投稿タイプ名をそれに突っ込んだとしたら、
どこで固定ページタイプか投稿ページタイプなのかを判断するのでしょうか?
###試したこと
以下、質問の補足として。
実際に"capability_type"の値を配列にしてみました。
そのあと、変数$test
に$GLOBALS['wp_post_types']['character']->cap;
を突っ込んでいます。
これで、カスタム投稿タイプに指定された権限を確認することができます。
PHP
1<?php 2function codex_custom_init() { 3/** 4* カスタム投稿タイプの追加 5*/ 6register_post_type( 7 'character', 8 array( 9 'label' => 'キャラクター', 10 'public' => true, 11 'show_ui' => true, 12 'capability_type' => array('character', 'characters'), 13 // 'capabilities' => array( 'create_posts' => 'create_characters' ), 14 'map_meta_cap' => true, 15 'has_archive' => true, 16 'menu_position' => 8, 17 'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt' ) 18 ) 19); 20 21/** 22* 権限確認用の変数 23*/ 24$test = $GLOBALS['wp_post_types']['character']->cap; 25var_dump($test); 26 27 28// 関数ここまで 29} 30add_action( 'init', 'codex_custom_init', 0);
.
変数$test
をvar_dump()
した結果がこちらです。
object(stdClass)#376 (15) { ["edit_post"]=> string(14) "edit_character" ["read_post"]=> string(14) "read_character" ["delete_post"]=> string(16) "delete_character" ["edit_posts"]=> string(15) "edit_characters" ["edit_others_posts"]=> string(22) "edit_others_characters" ["publish_posts"]=> string(18) "publish_characters" ["read_private_posts"]=> string(23) "read_private_characters" ["read"]=> string(4) "read" ["delete_posts"]=> string(17) "delete_characters" ["delete_private_posts"]=> string(25) "delete_private_characters" ["delete_published_posts"]=> string(27) "delete_published_characters" ["delete_others_posts"]=> string(24) "delete_others_characters" ["edit_private_posts"]=> string(23) "edit_private_characters" ["edit_published_posts"]=> string(25) "edit_published_characters" ["create_posts"]=> string(15) "edit_characters" }
これらは、先述の通り、カスタム投稿タイプに指定された権限になります。
ちなみに、var_dump( get_post_type_object( 'post' ) );
とすると
デフォルトの投稿ページに指定されてる権限を見ることができます。
(引数を"page"にすれば固定ページに関しても、もちろん見れます。)
つまり、カスタム投稿タイプには、明確に"post"と"page"によって指定される権限が異なるはずです。
ゆえに、該当のカスタム投稿タイプが、そのどちらに当たるのかを指定しないといけないのではと思っています。
###補足情報(言語/FW/ツール等のバージョンなど)
WordPress 4.8.1
あなたの回答
tips
プレビュー