Como corrigir o erro de permissão ao criar Custom Fields no JetEngine
O que é erro de permissão ao criar Custom Fields no JetEngine?
O JetEngine cria campos personalizados de três formas no WordPress: Meta Fields anexados a posts, páginas e Custom Post Types, campos de Taxonomy ou Options Pages, e colunas de Custom Content Types (CCT) gravadas em tabela própria. Toda a administracao desses campos vive nos menus do JetEngine no wp-admin, que são registrados sob a capability manage_options, própria do perfil Administrador. O erro de permissão aparece quando o usuário que tenta criar ou salvar o campo não tem essa capability, ou quando a requisicao que grava o campo e barrada antes de chegar ao banco.
Na prática o sintoma se divide em dois grupos. No primeiro, o menu de Meta Fields nem aparece, ou abre com aviso de acesso negado, porque o perfil em uso (Editor, Autor ou uma role customizada) não herda manage_options. No segundo, o menu abre, você monta o grupo de campos, clica em salvar e a operacao falha com mensagem de permissão, porque o admin-ajax ou o REST que persiste o campo foi bloqueado por um nonce invalido, por um plugin de segurança, ou pela regra de acesso configurada no próprio Custom Content Type.
Como identificar
- A mensagem ‘Sorry, you are not allowed to access this page.’ aparece ao tentar abrir o menu de Meta Fields ou Custom Content Types do JetEngine.
- O menu do JetEngine no wp-admin não aparece para um usuário que não e Administrador, mesmo com o plugin ativo.
- Ao clicar em salvar o grupo de campos surge um aviso de permissão ou a tela trava sem confirmar o salvamento.
- No console do navegador a requisicao admin-ajax.php retorna status 403 Forbidden ou a resposta -1 ao salvar o campo.
- Ao gravar um item de Custom Content Type aparece ‘You do not have permission to do this’ mesmo com o campo já criado.
Como prevenir
- Reserve a criação de Meta Fields e Custom Content Types do JetEngine ao perfil Administrador, em vez de espalhar manage_options por várias roles.
- Documente quais roles customizadas receberam manage_options e revise esse acesso periodicamente, porque ele libera bem mais do que apenas os campos do JetEngine.
- Mantenha no plugin de segurança uma excecao estavel para admin-ajax.php do wp-admin, evitando que regras novas voltem a bloquear o salvamento dos campos.
- Salve o trabalho em grupos de campos grandes em partes, para não perder a edição caso o nonce da sessao expire no meio do processo.
Causa
- O usuário logado tem perfil Editor, Autor ou uma role customizada que não possui a capability manage_options, exigida pelos menus de Meta Fields e Custom Content Types do JetEngine.
- Uma role criada por plugin gerenciador de perfis (como User Role Editor ou Members) foi salva sem a capability manage_options, entao o JetEngine não registra seus menus para esse perfil.
- Um plugin de segurança ou firewall (como All In One Security ou Wordfence) bloqueia a chamada admin-ajax.php que o JetEngine usa para gravar o grupo de campos, devolvendo 403 antes de salvar.
- O nonce da tela de edição expirou porque a sessao ficou aberta por muito tempo, e o JetEngine recusa a gravacao por verificacao de segurança invalida.
- O Custom Content Type esta configurado com uma regra de acesso (capability ou perfil de admin) que não bate com o usuário atual, negando a criação ou edição dos itens do CCT.
Como resolver
- Confirme o perfil e a capability do usuário: Entre com uma conta Administrador e confira o perfil de quem recebe o erro. Os menus de Meta Fields e Custom Content Types do JetEngine são registrados sob a capability manage_options, que so o perfil Administrador tem por padrão. Editor e Autor não a possuem.
Painel WP -> Usuários -> Todos os Usuários Abra o usuário afetado e confirme o Perfil (alvo: Administrador para criar campos) - Garanta manage_options na role customizada: Se o usuário precisa de uma role customizada em vez de Administrador, atribua a capability manage_options a essa role com um gerenciador de perfis. Sem ela o JetEngine não exibe os menus de campos para o perfil.
Instale e ative um gerenciador de perfis (ex.: User Role Editor) Painel WP -> Usuários -> User Role Editor -> selecione a role Marque a capability manage_options e clique em Update - Libere o admin-ajax no plugin de segurança: Se o menu abre mas o salvamento falha com 403, um plugin de segurança ou firewall esta barrando a chamada admin-ajax.php usada pelo JetEngine. Crie uma excecao para admin-ajax.php no wp-admin ou desative o firewall temporariamente para confirmar a causa.
Painel WP -> plugin de segurança -> regras de firewall / WAF Adicione uma excecao para /wp-admin/admin-ajax.php Salve um grupo de campos de teste para confirmar que o 403 sumiu - Renove a sessao para corrigir o nonce: Se a tela ficou aberta por muito tempo, o nonce de segurança expira e o JetEngine recusa a gravacao por verificacao invalida. Faca logout e login de novo para gerar um nonce valido antes de montar o grupo de campos.
Painel WP -> canto superior direito -> Sair Faca login novamente e reabra o menu de Meta Fields do JetEngine Recrie e salve o grupo de campos com a sessao nova - Ajuste a regra de acesso do Custom Content Type: Se o erro acontece so ao gravar itens de um Custom Content Type, revise a configuração de acesso do CCT. Uma capability ou perfil de admin definido ali que não casa com o usuário atual nega a criação e edição dos itens.
Painel WP -> JetEngine -> Custom Content Types -> abra o CCT Na aba de configurações, ajuste a capability/Admin para um valor que o usuário possui Salve e tente criar um item novo do CCT
<?php
/**
* Concede a capability manage_options a uma role customizada
* para liberar os menus de campos do JetEngine.
* Rode uma vez (admin logado) e depois remova o snippet.
*/
add_action( 'admin_init', 'full_jetengine_grant_manage_options' );
function full_jetengine_grant_manage_options() {
if ( ! current_user_can( 'manage_options' ) ) {
return; // so um admin executa a concessao
}
$role = get_role( 'editor' ); // troque pela role alvo
if ( $role && ! $role->has_cap( 'manage_options' ) ) {
$role->add_cap( 'manage_options' );
}
}














