Eu estava escrevendo um pequeno plug-in para remover alguns itens de menu para usuários não administradores do back-end e descobri que meu plug-in não fazia nada a menos que eu especificasse uma prioridade no meu código:
add_action('admin_bar_menu', 'remove_toolbar_items', 999);
Sem o 999
, o código não remove os itens da minha remove_toolbar_items
função e com ele funciona muito bem:
function remove_toolbar_items( $wp_admin_bar ) {
if ( !current_user_can( 'manage_options' ) ) {
$wp_admin_bar->remove_node('new-post');
$wp_admin_bar->remove_node('comments');
}
}
Os documentos para o estado do parâmetro de prioridade:
Usado para especificar a ordem na qual as funções associadas a uma ação específica são executadas. Os números mais baixos correspondem à execução anterior e as funções com a mesma prioridade são executadas na ordem em que foram adicionadas à ação. Valor padrão: 10
No entanto, não encontrei nada que explique como você deve determinar qual prioridade usar. Como você determina quando usar a prioridade e qual prioridade usar? Sinto como se estivesse coçando a cabeça por horas se não tivesse brincado com o parâmetro priority.
Além disso, vejo que a prioridade padrão é 10, mas existe um intervalo conhecido de valores de prioridade?
O WordPress coloca suas ações em uma matriz com prioridades indexadas. Você pode ver isso imprimindo (no painel do administrador
admin_init
)$wp_filter
:* Nota *, como @s_ha_dum aponta nos comentários abaixo,
admin_init
pode não pegar todos os ganchos adicionados à ação, a impressão mais confiável pode estar sendo conectadashutdown
.Isso nos dá uma matriz elegante que se parece com isso: (simplificado)
0, 4, 7, 10 e assim por diante são as prioridades das ações; quando uma nova ação é adicionada, ela é padronizada para 10, semelhante ao índice 0 no exemplo acima, elas são apenas empilhadas no mesmo índice da matriz . Considerando que muitos ganchos foram adicionados a essa ação específica, você desejaria no final ou, finalmente, após a execução de uma ação específica (como menus). Uma das duas prioridades também poderia funcionar com a mesma eficácia:
81
ou201
.Na maior parte, a prioridade padrão 10 é suficiente. Outras vezes, você deseja adicionar seu gancho diretamente após o outro (para talvez anular seu objetivo ou remover um item específico). Nesse caso, você pode usar o
global $wp_filter;
para descobrir para onde ele precisa ir.fonte
admin_init
e apenas coisas ligadas à instalação atual. Ele não diz nada sobre o que um plugin ou tema ainda não desinstalado pode fazer. +1 de qualquer maneira.admin_footer
certo? Ou isso seria o mesmo problema?shutdown
gancho seria sua melhor aposta, mas apenas para o código instalado e, mesmo assim, as coisas podem ser conectadas condicionalmente, para que seja possível perder algumas de qualquer maneira.Bem, há uma maneira de encontrar a prioridade de uma ação.
podemos usar o código a seguir
has_action( $tag, $function_to_check )
que, opcionalmente, retorna a prioridade nesse gancho para a função especificada.Ref: https://codex.wordpress.org/Function_Reference/has_action
fonte
Caso alguém esteja procurando pela lista de prioridade / referência de ação do WordPress, o link completo está aqui:
https://codex.wordpress.org/Plugin_API/Action_Reference/
fonte