web-dev-qa-db-ja.com

Map_meta_capフィルタの使用は何ですか?

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

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

それは正確には何のためのものですか?可能であれば、正しい使い方のサンプルコードをいくつか挙げてください。

19
rsman

このフィルタは map_meta_cap()関数 を拡張することを可能にします。 metaケーパビリティ を1つ以上の プリミティブケーパビリティ に変換するためのこの関数 WP_User->has_cap()によって呼び出されます

たとえば、現在のユーザーが現在の投稿 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 を使用すると、カスタム投稿を使用する場合などに機能を拡張できます。 register_post_typecapabilities引数を設定すれば基本的なサポートが提供されると思いますが、 Justin TadlockProspress plugin による記事はこの完全な例を提供します。ただし、必要に応じて、機能システムを完全にひっくり返すようにカスタマイズすることもできます。

24
Jan Fabry

このフィルタは、カスタム投稿タイプのメタ機能をマッピングするために使用できます。この記事には良いコード例があります。

http://justintadlock.com/archives/2010/07/10/meta-capabilities-for-custom-post-types

6
sorich87

これは、関数map_meta_cap()のフィルタです。説明から、この関数は一般的な機能( can_do_stuff )をより具体的なものに書き出し(投稿の作者なら can_do_this_stuff そして can_do_that_stuff_also )、必要に応じてさまざまな条件を調べているようです。

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

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

2
Rarst