Como corrigir os Data Stores do JetEngine que não salvam dados do usuário no WordPress
O que é JetEngine Data Stores não salva?
O JetEngine Data Stores e o recurso do JetEngine que permite ao visitante guardar uma colecao pessoal de posts no site, como favoritos, lista de desejos ou itens para comparar. Cada store tem um tipo de armazenamento que define ONDE os itens ficam: Local Storage e Cookies guardam no próprio navegador do visitante, enquanto o tipo Users grava no perfil do usuário logado (na tabela wp_usermeta) e o tipo baseado em banco grava em tabela do site.
A falha de salvar aparece quando esse tipo de armazenamento não combina com o comportamento esperado. Um store em Local Storage parece não salvar porque os itens vivem so naquele navegador e somem ao limpar o cache ou trocar de aparelho. Um store do tipo Users não grava nada quando o visitante esta deslogado, porque não existe usuário ao qual associar os dados. Cache de página sobre a saida dinâmica do store e falhas na chamada AJAX de adicionar o item completam os motivos mais comuns de o JetEngine Data Stores não salvar.
Como identificar
- O visitante clica no botão de adicionar aos favoritos, o contador atualiza, mas ao recarregar a página o item sumiu do Data Store.
- Os itens salvos aparecem em um navegador ou dispositivo, mas desaparecem quando o mesmo usuário acessa de outro aparelho ou de uma aba anonima.
- O usuário faz login e a lista de favoritos volta vazia, mesmo tendo adicionado itens antes em outra sessao.
- Em páginas com cache ativo, a Listing Grid ou contador do Data Store mostra sempre a mesma quantidade, ignorando adicoes recentes.
- No console do navegador aparece falha na requisicao admin-ajax.php (resposta 400 ou 403) no momento em que o botão de adicionar ao store e clicado.
Como prevenir
- Escolha o Store Type pensando no objetivo desde o inicio: por navegador (Local Storage ou Cookies) para listas temporarias e por usuário logado quando a colecao precisa seguir a conta entre dispositivos.
- Sempre exclua do cache de página as URLs que exibem Data Stores dinâmicos, evitando que estado antigo seja servido a todos os visitantes.
- Quando o store depender de conta, condicione o botão de adicionar a usuários logados para não receber cliques que não tem onde ser salvos.
- Documente o limite Max Number de cada store e revise quando o uso crescer, para que clientes ativos não percam itens ao bater o teto silenciosamente.
Causa
- O Store Type esta configurado como Local Storage ou Cookies: os itens ficam guardados apenas no navegador daquele visitante, entao trocar de dispositivo, abrir aba anonima ou limpar o navegador apaga a colecao e da a impressao de que não salvou.
- O Store Type esta como Users mas o visitante esta deslogado: sem um usuário logado o JetEngine não tem em qual perfil gravar os dados (wp_usermeta), entao a adicao não persiste e o store volta vazio ao recarregar.
- Um plugin de cache de página (como WP Rocket ou LiteSpeed) esta servindo a saida estática da Listing Grid ou do contador do store, congelando o estado anterior e escondendo os itens recem adicionados.
- A chamada AJAX de adicionar ao store falha por nonce expirado ou bloqueio de admin-ajax.php por firewall ou WAF, entao o clique no botão não chega a gravar o item no destino configurado.
- O limite Max Number de itens do store foi atingido: ao bater o teto, novos itens não entram (ou empurram os antigos), dando a impressao de que o item adicionado não foi salvo.
Como resolver
- Confirme o Store Type adequado ao comportamento esperado: Abra a configuração do Data Store no JetEngine e verifique o campo Store Type. Se você espera que a lista siga o usuário entre dispositivos, ela precisa estar atrelada a conta, não ao navegador. Local Storage e Cookies são por navegador e não acompanham o usuário em outro aparelho.
Painel WP -> JetEngine -> Data Stores -> abra o store Localize o campo Store Type Para colecao por dispositivo: Local Storage ou Cookies Para colecao que segue a conta entre dispositivos: tipo baseado em usuário logado - Exija login quando o store for por usuário: Se o store grava no perfil do usuário, um visitante deslogado não tem onde os dados serem salvos. Restrinja o botão de adicionar a usuários logados ou mostre um aviso de login, para que a adicao so ocorra quando houver um usuário valido associado.
Painel WP -> Aparencia ou Templates -> abra o template com o botão do store Aplique Dynamic Visibility ou condicao 'usuário logado' ao botão de adicionar Para visitantes deslogados, exiba um link de login no lugar do botão - Exclua a página do cache para o store dinâmico: O Data Store muda por visitante, entao a página que o exibe não pode ser entregue do cache estático. Adicione a URL a lista de exclusoes do plugin de cache e limpe o cache existente para que o estado atual do store seja lido a cada acesso.
Painel WP -> abra as configurações do plugin de cache (ex.: WP Rocket -> Avancado) Adicione a URL da página do store em Nunca armazenar em cache (URLs) Salve e clique em Limpar cache - Diagnostique a falha de AJAX no clique de adicionar: Abra o console do navegador e clique no botão de adicionar para ver se a requisicao admin-ajax.php retorna erro. Resposta 403 costuma ser firewall ou WAF bloqueando, e 400 com nonce invalido indica página cacheada com nonce velho. Libere o admin-ajax.php e desative o cache na página para renovar o nonce.
Abra o navegador -> tecle F12 -> aba Network Clique no botão de adicionar ao store e observe a chamada admin-ajax.php Se 403: libere admin-ajax.php no firewall ou WAF Se 400 (nonce): garanta que a página não esta sendo entregue do cache - Reveja o limite Max Number do store: Volte a configuração do Data Store e confira o campo de quantidade maxima de itens. Se o limite já foi atingido, eleve o número ou aceite que itens antigos são substituidos, para que novas adicoes não pareçam falhar ao bater o teto.
Painel WP -> JetEngine -> Data Stores -> abra o store Localize o campo Max Number (quantidade maxima de itens) Aumente o valor conforme a necessidade e salve
<?php
// Exclui a pagina que exibe um JetEngine Data Store do cache do WP Rocket,
// para o estado por visitante nao ser servido estatico (favoritos somem).
add_filter( 'rocket_cache_reject_uri', 'full_jetengine_store_no_cache' );
function full_jetengine_store_no_cache( $uris ) {
// Ajuste para o caminho real da pagina que mostra o store.
$uris[] = '/minha-lista-de-favoritos/';
return $uris;
}
// Garante que o botao de adicionar ao store por usuario so apareca logado.
add_filter( 'jet-engine/data-stores/can-use-store', 'full_jetengine_store_require_login' );
function full_jetengine_store_require_login( $can_use ) {
return is_user_logged_in() ? $can_use : false;
}














