質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

0回答

4018閲覧

カスタム投稿タイプにおける"capability_type"に何を指定すべきか

Yashichi

総合スコア35

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2017/08/24 03:24

編集2017/08/24 03:44

###質問
固定ページタイプのカスタム投稿タイプを作成します。
権限を独自につくり、そのカスタム投稿タイプで投稿や編集をするには、独自の権限グループに属さないといけないようにします。

...ということをやろうとしています。

カスタム投稿タイプをつくるだけなら、以前やったことがあるのでわかるのですが、

そのときに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);

.
変数$testvar_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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問