ユーザーロールに機能を追加する方法


14

私はWordpressネットワークを管理していますが、adminの定義済みのユーザーロールにunfiltered_htmlユーザー機能を追加したいと思います。Wordpressの標準インストールでは、管理者アカウントにはすでにこの機能がありますが、MUインストールでは、スーパー管理者のみがこの機能を利用できます。Wordpressの役割と機能

テーマまたはプラグイン内から管理者ロールを増強するにはどうすればよいですか?


1
wordpress.org/extend/plugins/unfiltered-muは役立つように見えます。ただし、管理者と編集者には有効です。それが望ましくない場合は、コードを少し調整できますか?
ブードゥー教徒牧師

これを参照してください:wordpress.stackexchange.com/questions/13025/…–
kaiser

@Rev。Voodoo提案をありがとう。これはunfiltered_htmlは、管理者またはスーパー管理ポスト埋め込み機能の能力以外の役割を可能にするのに十分ではないの鍵は/アンフィルタリングたなど、機能を追加するWordPressのKSESを引っ掛けるなどの対象にいくつかの光を当てる助け:kses_remove_filtersを()
ジョニーボジャングルズ

詳細ブログ:goo.gl/xNuafH
Suresh Kamrushi

回答:


14

WP_Roleクラスを使用できます。

// get the the role object
$role_object = get_role( $role_name );

// add $cap capability to this role object
$role_object->add_cap( $capability_name );

// remove $cap capability from this role object
$role_object->remove_cap( $capability_name );

したがって、管理者がSCRIPTおよびIFRAMEタグを投稿コンテンツに入力できるようにする方法に関する元の質問に対処するには、マルチサイトではスーパー管理者のみに付与される「unfiltered_html」機能を探しています。

// get the the role object
$admin_role = get_role( 'administrator' );
// grant the unfiltered_html capability
$admin_role->add_cap( 'unfiltered_html', true );

または、関数でこれを1回実行できます。

/* Roles & Capabilities */
add_role('professional', 'Professional User', array(
    'read' => true, // True allows that capability, False specifically removes it.
    'edit_posts' => true,
    'delete_posts' => true,
    //'edit_published_posts' => true,
    //'publish_posts' => true,
    //'edit_files' => true,
    'upload_files' => true //last in array needs no comma!
));

ありがとう、フィリップ。WP_Roleクラスに関しては、いつコードを実行する必要がありますか?これはグローバルロールオブジェクトに影響すると思いますか?関数ファイルでこれを1回実行できることを示すコードの2番目のブロックを提示してくれてうれしいです。Wordpressサポートフォーラムのいくつかで同様のソリューションを見つけましたが、テーマまたはプラグインで一度コードを実行するのは奇妙に感じます。特に、変更が既に存在するかどうかを確認せずに。おそらく、ロールの書き込みは実際にはごくわずかです。機能を確認するには、最初の例に示すように、ロールに機能を書き込むだけです。
ジョニーボジャングルズ

また、気軽に教えていただければ、WP_Roleクラスを実行する方法にも興味があります。ありがとう
大須

1
@Jonnybojaglesと@Osu、これをチェックしてください:役割と機能の究極のガイドgaryc40.com/2010/04/ultimate-guide-to-roles-and-capabilities
フィリップ

私はすでにこの記事を読んでいますが、機会を利用してもう一度やり直しました。ありがとうございました!最終的に、unfiltered-mu(上記のVoodoo牧師による)プラグインを分析した後、機能を追加して役割を変更するだけでは不十分であることが最終的にわかりました。WordpressのKSESフィルターをフィルター解除する必要がありました。
ジョニーボジャングルズ

配列の最後の要素にコンマを追加することを好みます。コードを動作させたりエラーを発生させる必要がないため、無関係に見えるかもしれませんが、変更を視覚化するときにバージョン管理を使用する場合に便利です。配列項目の古い行が削除、再追加、新しい行として強調表示されることはなく、その行に追加または変更されたコンマだけが表示されます。わずかですが、変更を分析する際に多くの時間を節約できます。
-nyedidikeke

2

スーパー管理者または管理者(Wordpressのインストールがネットワーク/ MUインスタンスであるかどうかによって異なります)以外の別の役割を許可するには、WordpressのKSESフィルターを削除する必要があります。

ユーザーに特定の機能があるかどうかを確認します。

if ( current_user_can( 'unfiltered_html' ) ) {  }

その場合、KSESを削除するよりも

kses_remove_filters();

この機能は既にフィルタリングされていないmuにラップされており、管理者と編集者はフィルタリングされていないhtmlを追加できます。


この機能はプラグインの登録および登録解除にもラップされているため、各WPインスタンスでロジックを実行する必要はありません。
ジョニーボジャングルズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.