Qual é o uso do filtro map_meta_cap?

20

Qual é o uso do map_meta_capfiltro? Este filtro não está documentado em nenhum lugar. Tenho uma ideia pouco clara do que poderia ser:

Usado para mapear as permissões do usuário para operações nas postagens.

O que exatamente é para isso? Se possível, dê um exemplo de código de exemplo de seu uso correto.

rsman
fonte

Respostas:

25

Este filtro permite que você estenda a map_meta_cap()função . Essa função é chamada porWP_User->has_cap() para converter um meta-recurso em um ou mais recursos primitivos .

Por exemplo, você deseja saber se o usuário atual deve ter permissão para editar a postagem atual, a edit_postcapacidade meta . Isso depende de alguns fatores: o usuário é o autor da publicação? A postagem já foi publicada? A postagem está marcada como particular? Os recursos primitivos são edit_posts, edit_published_posts, edit_others_postse edit_private_posts: você pode atribuí-los a funções de usuário . map_meta_cap()verifica o autor e o status da postagem e retorna o conjunto correto de recursos primitivos que esse usuário deve ter para permitir a edição da postagem (se a postagem for escrita por outra pessoa e publicada, ela retornará array('edit_others_posts', 'edit_published_posts'), portanto, o usuário deverá ter os dois recursos para continuar).

A adição dessa idéia de meta-capacidades e recursos primitivos permite manter a WP_Userclasse base livre do conhecimento de postagens e status de postagens e o que for, além de se concentrar apenas nos recursos. A conversão real está em uma função externa map_meta_cap(),.

O filtromap_meta_cap permite estender a funcionalidade, por exemplo, ao usar postagens personalizadas. Acredito que suporte básico seja fornecido se você definir o capabilitiesargumento register_post_type, mas o artigo mencionado por Justin Tadlock e Prospress plugin fornece exemplos completos disso. Mas você pode personalizá-lo para ativar completamente o sistema de recursos, se desejar.

Jan Fabry
fonte
2

Este é um filtro de função map_meta_cap(). A partir da descrição, essa função parece escrever a capacidade geral ( can_do_stuff ) passada para mais específica (se o autor da postagem, can_do_this_stuff e can_do_that_stuff_also ), verificando várias condições, se necessário.

Infelizmente, ele não está documentado no Codex e não consigo encontrar uma única chamada direta dessa função na fonte WP 3.0.1.

Você encontrou o uso dessa função ou deseja usá-la para alguma coisa? Presumo que, como não parece ser usado, provavelmente existem maneiras novas e melhores para essa funcionalidade.

Rarst
fonte
O autor deste plug-in parece estar usando: github.com/Prospress/Prospress/blob/master/pp-posts/…
rsman