map_meta_capフィルターの使用とは何ですか?


20

map_meta_capフィルターの使用とは何ですか?このフィルターはどこにも文書化されていません。私はそれが何であるかについて不明確な考えを持っています

ユーザーの権限を投稿の操作にマップするために使用されます。

正確には何を意味するのでしょうか?可能であれば、正しい使用法のサンプルコード例をいくつか示してください。

回答:


25

このフィルタを使用するとmap_meta_cap()機能を拡張できます。この関数WP_User->has_cap()メタ機能を1つ以上のプリミティブ機能に変換するために呼び出されます

たとえば、現在のユーザーが現在の投稿であるedit_postメタ機能を編集できるかどうかを知りたいとします。これはいくつかの要因に依存します:ユーザーは投稿の著者ですか?投稿は既に公開されていますか?投稿は非公開としてマークされていますか?原始的な機能がありedit_postsedit_published_postsedit_others_postsそしてedit_private_posts:あなたはこれらを割り当てることができ、ユーザの役割map_meta_cap()投稿の作成者とステータスをチェックし、このユーザーが投稿の編集を許可するために必要なプリミティブ機能の正しいセットを返します(投稿が他の誰かによって書かれて公開された場合、戻るarray('edit_others_posts', 'edit_published_posts')ため、ユーザーは両方の機能を持っている必要があります持続する)。

このメタ機能プリミティブ機能の考え方を追加すると、基本WP_Userクラスを投稿や投稿ステータスなどの知識から解放し、機能に集中することができます。実際の変換は外部関数で行われmap_meta_cap()ます。

フィルターをmap_meta_cap使用すると、カスタム投稿を使用する場合などに機能を拡張できます。のcapabilities引数を設定すると基本的なサポートが提供されると思いますregister_post_typeが、Justin TadlockProspressプラグインによる前述の記事は、この完全な例を提供します。ただし、必要に応じて、機能システムを完全に裏返すようにカスタマイズできます。



2

これは関数のフィルターですmap_meta_cap()。説明から、この関数は一般的な機能(can_do_stuff)をより具体的に(投稿の作者の場合can_do_this_stuffcan_do_that_stuff_also)に渡し、必要に応じてさまざまな条件をチェックしているようです。

残念ながら、Codexには文書化されておらず、WP 3.0.1ソースではこの関数の単一の直接呼び出しを見つけることができません。

この機能の使用に遭遇したか、何かのために使用したいですか?使用されていないようだから、おそらくこの機能にはもっと新しくてより良い方法があると思う。


このプラグインの作者は、それを使っているようです: github.com/Prospress/Prospress/blob/master/pp-posts/...
rsman
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.