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

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

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

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

Q&A

解決済

1回答

270閲覧

自作の権限グループに、新たに権限を追加したい

Yashichi

総合スコア35

WordPress

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

0グッド

0クリップ

投稿2017/08/22 05:54

###前提・実現したいこと
「管理者」や「寄稿者」といったように、自作で権限グループを追加しました。
######該当のソースコード

PHP

1$roles = new WP_Roles(); 2//var_dump($roles); 3 4$test = $GLOBALS['wp_post_types']['character']->cap; 5//var_dump($test); 6 7 8add_role('test_group', 'テスト権限', array( 9 'create_characters' => true 10 ));

"add_role"に記述している"create_characters"というのが、
カスタム投稿タイプで指定したcapabilitiesの値です。

このグループに、次々と権限を付与したいのですが、
どうも上手く行きません。

PHP

1add_role('test_group', 'テスト権限', array( 2 'read' => true, 3 'create_characters' => true 4 ));

.
まずは管理画面を見るためにread権限を付与しようとしました。
しかし上手く行かなかったので、new WP_Rolesを突っ込んだ変数をvar_dumpしたところ、

object(WP_Roles)#5144 (5) { ["roles"]=> array(6) { ["test_group"]=> array(2) { ["name"]=> string(15) "テスト権限" ["capabilities"]=> array(1) { ["create_characters"]=> bool(true) } } }

"read"権限が与えられていない...(T_T)

権限グループに対して新たに権限を追加するにはどうしたら良いのでしょうか...。
###補足情報(言語/FW/ツール等のバージョンなど)
WordPress 4.8.1

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

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

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

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

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

kei344

2017/08/22 08:28

断片的に書かれたコードがつながっていません。提示コードのどのvar_dumpの結果でしょうか。
Yashichi

2017/08/22 09:44 編集

現在再現できる環境にいないので申し訳ありませんが、、、 あらかじめカスタム投稿タイプを作成したあとに、$roles = new WP_Role();をしました。 その $rolesをvar_dumpしてます。この変数をvar_dumpすると、現在の権限グループが配列で返ってきます。今回新しく権限グループ"test_group"をつくったので、それが配列の6番目の値として返ってきてます。
guest

回答1

0

ベストアンサー

コードの回答ではなくすみません。プラグインを利用されてはいかがでしょうか?
User Role Editorいいですよ。使いやすいです。
勉強目的でしたらすみません。

http://tontotakumi.com/web-seisaku/multi-login/

###※ここから追記です。
add_roleはすでに存在する場合、上書きにはならなそうですがこれは関係ないですか?

PHP

1$result = add_role( 2 'test_group', 3 'テスト権限', 4 array( 5 'read' => true, 6 'create_characters' => true 7 ) 8); 9if ( null !== $result ) { 10 echo '新しい権限グループを作成しました!'; 11} 12else { 13 echo 'すでに test_group 権限グループは存在します。'; 14}

参考

すでに存在する場合一度すべて取得して処理する必要がありそうです。
※ コードは未検証ですので使用する際はご注意ください。

PHP

1$roles = new WP_Roles(); 2 3foreach ($roles->roles as $key => $value ) { 4 $role = get_role($key); 5 if ( $key == 'test_group' ) $role->add_cap( 'read' ); 6}

参考

投稿2017/08/22 07:51

編集2017/08/22 10:57
IShix

総合スコア1724

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

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

Yashichi

2017/08/22 08:08

プラグイン...! ありがとうございます!ただ、今回は直接書いてみたくて...(・_・;)
IShix

2017/08/22 10:49

やっぱりそうですよね。追記しましたので見てみてください。
Yashichi

2017/08/22 11:05

foreachで配列を回して、権限を追加するんですね..!!! これだと確かにやりたいことができます!!!! ありがとうございますm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問