Como corrigir as Options Pages do JetEngine que não salvam configurações no WordPress
O que é JetEngine Options Page não salva?
As JetEngine Options Pages são telas de configurações globais que você cria dentro do JetEngine para guardar dados que valem para o site inteiro, como telefone, endereco, logo ou textos de rodape, fora do conteúdo de um post específico. Por padrão o JetEngine grava esses valores na tabela wp_options do WordPress, identificados pelo slug que você define ao criar a Options Page. Quando a página funciona, os campos preenchidos no painel ficam disponiveis em todo o site via Dynamic Tags do JetEngine ou da função de leitura da Options Page.
O erro aparece quando você preenche os campos, clica em salvar e os valores voltam vazios, somem após recarregar ou nunca chegam ao frontend. Isso quase sempre tem causa concreta: um slug que conflita com uma opção já existente no wp_options, a capability errada bloqueando a gravacao para o perfil logado, ou uma troca do tipo de armazenamento (de opção única para opções separadas) feita depois que a página já tinha dados, o que dessincroniza onde o JetEngine le e onde grava.
Como identificar
- Você preenche os campos da Options Page, clica em Update, mas ao recarregar a tela os campos voltam vazios como se nada tivesse sido salvo.
- A mensagem ‘Settings saved’ (ou ‘Configurações salvas’) aparece, porém o valor não chega ao frontend pelas Dynamic Tags da Options Page.
- A função de leitura jet_engine()->options_pages->get(…) retorna vazio ou null mesmo com o campo preenchido no painel.
- O valor antigo continua aparecendo no site depois de editado e salvo, indicando que a gravacao não sobrescreveu a opção no wp_options.
- Após trocar o tipo de armazenamento da Options Page, todos os campos que tinham valor passam a aparecer em branco no editor da página.
Como prevenir
- Defina o slug da Options Page com um prefixo próprio do projeto logo na criação, para nunca colidir com opções do nucleo, do tema ou de outros plugins.
- Escolha o tipo de armazenamento (opção única ou opções separadas) antes de inserir qualquer dado e não altere depois com a página já preenchida.
- Documente a capability exigida por cada Options Page e teste o salvamento com os perfis que realmente vao editar aquelas configurações.
- Inclua a limpeza do object cache no checklist de deploy quando o site usa Redis ou Memcached, para que valores de opção recem-salvos não fiquem mascarados pelo cache.
Causa
- O slug definido na Options Page e igual ao nome de uma opção já existente na tabela wp_options (do nucleo, do tema ou de outro plugin), e a gravacao do JetEngine colide com esse registro e não persiste o valor esperado.
- O perfil do usuário logado não possui a capability exigida pela Options Page (manage_options por padrão), entao o WordPress processa o formulário sem aplicar a atualização da opção.
- O tipo de armazenamento foi alterado depois que a página já tinha dados: alternar entre 'Store as separate options' e opção única serializada muda a chave usada no wp_options, e o JetEngine passa a ler de uma chave diferente da que esta gravada.
- Um plugin de cache de objeto (Redis ou Memcached) serve o valor antigo da opção a partir do cache e não invalida a chave após o save, fazendo o campo parecer que não salvou.
- Em multisite, a Options Page foi registrada no escopo errado: o valor e gravado em um site da rede e lido em outro, ou esperado em wp_options de rede (sitemeta) mas gravado no site individual.
Como resolver
- Troque o slug da Options Page por um valor único: Abra a Options Page no JetEngine e confira o campo de slug. Use um prefixo próprio para evitar colisao com opções do nucleo, do tema ou de outros plugins. Slug único impede que a gravacao sobrescreva ou seja sobrescrita por outra opção no wp_options.
Painel WP -> JetEngine -> Options Pages -> abra a página No campo Slug, use um valor exclusivo com prefixo (ex.: minhaempresa_config_geral) Clique em Update Options Page e teste salvar um campo novamente - Confira a capability e o perfil do usuário: Verifique a opção de capability da Options Page e confirme que o usuário que esta salvando possui essa permissão. Por padrão o JetEngine exige manage_options, atribuida ao perfil Administrador. Editores e perfis abaixo não gravam sem ajuste.
Painel WP -> JetEngine -> Options Pages -> abra a página -> campo Capability Defina manage_options (ou uma capability que o perfil realmente tenha) Faca login com um Administrador e tente salvar a Options Page de novo - Padronize o tipo de armazenamento e não alterne com dados: Decida entre opção única serializada e opções separadas e mantenha a escolha. Trocar depois de já ter valores muda a chave gravada no wp_options e o JetEngine passa a ler de outra chave. Se já trocou, volte ao tipo original ou reinsira os valores no novo tipo.
Painel WP -> JetEngine -> Options Pages -> abra a página -> Storage Type Mantenha um único tipo (ex.: opção única) durante toda a vida da página Reinsira os valores nos campos após confirmar o tipo final e salve - Limpe o cache de objeto após salvar: Se o site usa cache de objeto persistente (Redis ou Memcached), o valor antigo da opção pode continuar sendo servido do cache. Limpe o object cache para forçar o WordPress a reler a opção gravada no wp_options.
Pelo plugin de cache: acione Flush Object Cache / Purge Via WP-CLI: wp cache flush Recarregue a Options Page e confirme que o valor salvo persiste - Verifique o valor direto no banco com WP-CLI: Para confirmar se a gravacao chegou ao banco, leia a opção pelo slug da Options Page. Se o valor aparece no wp_options mas não no frontend, o problema e de leitura (chave ou escopo); se não aparece, e de gravacao (slug, capability ou cache).
wp option get minhaempresa_config_geral --format=json Em multisite, repita por site: wp option get SLUG --url=https://site-da-rede.com Compare o slug retornado com o usado nas Dynamic Tags do frontend
<?php
// Le com seguranca um valor de uma Options Page do JetEngine.
// Use no tema/plugin quando precisar do valor fora de uma Dynamic Tag.
function full_get_jet_option( $option_name, $default = '' ) {
// Guarda: evita fatal error se o JetEngine estiver inativo.
if ( ! function_exists( 'jet_engine' )
|| ! isset( jet_engine()->options_pages ) ) {
return $default;
}
// Le pelo slug da Options Page + nome do campo.
$value = jet_engine()->options_pages->get_options( $option_name );
return ( '' === $value || null === $value ) ? $default : $value;
}
// Exemplo: telefone gravado no campo 'telefone' da Options Page de slug 'minhaempresa_config_geral'.
$telefone = full_get_jet_option( 'minhaempresa_config_geral::telefone', '' );














