Como corrigir o cache do WP-Optimize em páginas de curso do Tutor LMS
O que é cache do WP-Optimize em páginas de curso do Tutor LMS?
O cache do WP-Optimize em páginas de curso do Tutor LMS gera um arquivo HTML estático de cada página e o serve a todos os visitantes seguintes, evitando reprocessar PHP a cada acesso. Isso acelera páginas públicas, mas entra em conflito com o Tutor LMS, que monta as páginas de curso de forma dinâmica para cada aluno: o que está liberado, o progresso da aula, o botão de continuar e a área de conteúdo restrito dependem de quem está logado. Quando o WP-Optimize guarda uma versão dessa página e a reentrega para todo mundo, o aluno vê o estado de outra sessão, normalmente o estado deslogado.
Na prática, a página de curso, de aula ou do painel do aluno aparece como se ninguém estivesse logado, mostrando o botão de matrícula no lugar do conteúdo já comprado. A documentação oficial do WP-Optimize trata exatamente esse cenário e oferece o User specific cache, recurso que gera arquivos de cache separados por usuário logado, citando como exemplo justamente alunos de curso online que precisam ver o conteúdo restrito acelerado. A correção combina excluir as páginas dinâmicas do cache padrão e, quando aplicável, ligar o cache por usuário.
Como identificar
- A página de curso do Tutor LMS mostra o botão ‘Matricular-se’ ou ‘Inscrever-se’ mesmo para um aluno que já está logado e matriculado.
- O conteúdo da aula aparece bloqueado com a mensagem de conteúdo restrito para quem já tem acesso, ou mostra a versão pública da lição.
- A barra de progresso do curso fica travada em um valor antigo e só atualiza depois de limpar manualmente o cache em WP-Optimize.
- O painel do aluno (frontend dashboard) carrega vazio ou exibe os dados de outro usuário, porque o HTML cacheado foi gerado em outra sessão.
- Sair e entrar na conta não muda nada na página de curso até a expiração do cache, sinal de que um arquivo estático está sendo servido a todos.
Como prevenir
- Sempre que instalar um plugin de cache em um site com Tutor LMS, exclua de imediato as URLs de curso, aula e painel do aluno do cache de página estático.
- Mantenha o User specific cache ligado em sites com área de membros, para que conteúdo restrito de aluno logado seja cacheado por usuário e nunca compartilhado entre sessões.
- Padronize os permalinks dos cursos e revise as regras de exclusão sempre que mudar a base de URL do Tutor LMS, evitando que páginas dinâmicas escapem da lista.
- Teste cada mudança de cache logado como aluno e deslogado como visitante antes de subir para produção, validando progresso, matrícula e conteúdo liberado.
Causa
- O cache de página do WP-Optimize está ativo sem o User specific cache, então o mesmo arquivo HTML estático da página de curso é servido a todos os alunos logados, congelando o estado de uma única sessão.
- As URLs dinâmicas do Tutor LMS (a base /courses/, as lições, o /dashboard/ do aluno) não estão na lista de URLs excluídas do cache em WP-Optimize, então essas páginas que deveriam ser sempre dinâmicas viram arquivos estáticos.
- O preload (pré-carregamento) do WP-Optimize gerou a versão deslogada das páginas de curso antes de qualquer aluno acessar, e é justamente esse HTML público que passa a ser entregue a quem está matriculado.
- A página de curso traz nonce do WordPress e tokens de sessão dentro do HTML; cacheados de forma estática, esses valores expiram e quebram ações AJAX do Tutor LMS como marcar aula concluída ou enviar quiz.
- O cookie de login não está fazendo o WP-Optimize ignorar o cache para o usuário logado naquela página específica, fazendo o servidor entregar o arquivo cacheado em vez de gerar o conteúdo do aluno.
Como resolver
- Limpe o cache atual do WP-Optimize: Antes de qualquer ajuste, apague o cache existente para descartar as versões deslogadas já gravadas das páginas de curso. Sem isso, você continua testando contra arquivos antigos e acha que a correção não funcionou.
Painel WP -> WP-Optimize -> Cache Clique em 'Purge cache' (Limpar cache) para apagar todos os arquivos gerados - Exclua as páginas dinâmicas do Tutor LMS do cache: Adicione as URLs do Tutor LMS à lista de exclusão do cache para que essas páginas voltem a ser geradas dinamicamente a cada acesso. Use a base de cursos, as lições e o painel do aluno; o curinga no fim cobre as URLs filhas.
Painel WP -> WP-Optimize -> Cache -> aba de configurações avançadas - No campo de URLs a excluir do cache, adicione uma por linha:
/courses/* /course/* /dashboard/* - Ative o User specific cache para alunos logados: Ligue o cache por usuário, recurso que a documentação do WP-Optimize indica para conteúdo restrito de curso online: ele gera arquivos de cache separados por usuário logado, então cada aluno recebe a versão correta com o conteúdo liberado, sem perder velocidade.
Painel WP -> WP-Optimize -> Cache -> configurações Marque a opção 'Serve a cached version of the page to logged in users' / 'User specific cache' Salve as alterações - Confirme que o aluno recebe a página dinâmica: Entre com uma conta de aluno real matriculado e abra a página do curso e uma lição. O conteúdo liberado, o progresso e o botão de continuar precisam aparecer corretamente. Repita em uma aba anônima deslogada para confirmar que a versão pública também está certa.
Acesse a página do curso logado como aluno matriculado Verifique no rodapé da página o comentário 'Cached by WP-Optimize' e o horário de geração Abra a mesma URL em aba anônima e compare o estado deslogado - Garanta a limpeza do cache ao publicar conteúdo: Confirme que o WP-Optimize limpa o cache quando um curso ou aula é atualizado, para o aluno não ver conteúdo antigo. Se a estrutura de URLs do seu curso for diferente da padrão, ajuste os caminhos da exclusão para casar com os seus permalinks.
Painel WP -> WP-Optimize -> Cache -> confirme a expiração (cache lifespan) ativa Atualize um curso de teste e verifique se a página correspondente saiu do cache Ajuste os caminhos de exclusão conforme os permalinks reais do Tutor LMS
<?php
// Garante que as paginas dinamicas do Tutor LMS nunca sejam servidas do
// cache de pagina do WP-Optimize, mesmo que a regra do painel falhe.
add_filter( 'wpo_url_exceptions', 'full_tutor_lms_no_cache' );
function full_tutor_lms_no_cache( $exceptions ) {
$rotas = array(
'/courses/.*', // arquivo e single de curso
'/course/.*', // base alternativa do permalink
'/lesson/.*', // paginas de aula
'/dashboard/.*', // painel frontend do aluno
);
foreach ( $rotas as $rota ) {
if ( ! in_array( $rota, $exceptions, true ) ) {
$exceptions[] = $rota;
}
}
return $exceptions;
}














