🎉 USE O CUPOM DESCONTO.FULL | 20% OFF acima de R$ 50,00

Como corrigir quizzes que não salvam respostas no Tutor LMS

Time Full Services Time Full Services
Tipo Outros erros
Nome do erro Quiz não salva respostas no Tutor LMS EN: Tutor LMS quiz answers not saving
Severidade Grave
Descrição No Tutor LMS, o quiz não salvar respostas significa que o aluno envia mas a tentativa não aparece em Quiz Attempts ou vem com respostas em branco. Quase sempre vem de tabelas customizadas ausentes no banco, do limite max_input_vars estourado, ou do AJAX do Tutor bloqueado por segurança ou cache.

O que é o quiz que não salva respostas no Tutor LMS?

O Tutor LMS grava cada tentativa de quiz em tabelas customizadas no banco (a tentativa em si e as respostas de cada pergunta), separadas das tabelas padrão do WordPress. Quando o aluno clica em enviar, o plugin dispara uma requisicao AJAX para o admin-ajax.php, calcula a nota e persiste a tentativa. O instrutor ve o resultado em Tutor LMS, Quiz Attempts. Quando algo nessa cadeia falha, o quiz parece funcionar para o aluno, mas a tentativa não e registrada ou chega ao painel com as respostas vazias e a nota zerada.

Como identificar

  • O aluno responde, clica em ‘Submit Quiz’ e a tela trava no botão de envio ou recarrega sem mostrar o resultado.
  • A tentativa não aparece em Tutor LMS, Quiz Attempts, ou aparece na aba ‘Pending’ com as colunas de resposta em branco e nota zero.
  • No console do navegador (F12, aba Rede) a chamada admin-ajax.php do Tutor retorna 400, 403 ou 500 ao enviar o quiz.
  • No builder do curso, ao salvar uma pergunta com muitas opções, ela some ou volta sem as alternativas (o quiz não guarda a própria configuração).
  • O log mostra ‘Table tutor_quiz_attempts doesnt exist’ ou erro de tabela ausente ao abrir a tela de tentativas.
Antes de começar: Faca backup do banco antes de importar SQL ou recriar tabelas pelo phpMyAdmin, e teste em staging quando o site estiver no ar. Nunca remova o nonce do envio do quiz para ‘resolver’ o AJAX: isso abre brecha de CSRF nas tentativas dos alunos.

Como prevenir

  • Após instalar ou migrar o Tutor LMS, confirme em phpMyAdmin que as tabelas wp_tutor_quiz_attempts e wp_tutor_quiz_attempt_answers existem.
  • Mantenha o max_input_vars do PHP em 5000 ou mais em sites com muitos quizzes e perguntas longas.
  • Mantenha o JavaScript do Tutor fora da minificacao e as páginas de quiz e licao fora do cache, e refaca uma tentativa de teste após cada atualização de plugin, tema ou regra de segurança.

Causa

  • Tabelas customizadas do Tutor (wp_tutor_quiz_attempts e wp_tutor_quiz_attempt_answers) não foram criadas na ativacao, situacao documentada pela Themeum em hosts que pulam o processo de criação de tabelas.
  • Limite max_input_vars do PHP no padrão 1000: quizzes com muitas perguntas e opções excedem esse número de campos no POST e o PHP trunca os dados, perdendo respostas e configurações do builder.
  • Requisicoes AJAX do Tutor (acoes tutor_quiz_attempt_save e tutor_save_quiz no admin-ajax.php) bloqueadas por firewall, WAF ou plugin de segurança, retornando 403 antes de gravar a tentativa.
  • Plugin de cache ou de otimização minificando o JavaScript do Tutor ou servindo um nonce expirado na página do quiz, fazendo o envio falhar com 'Invalid nonce' silencioso.
  • Limite de execução do PHP (max_execution_time ou memory_limit) baixo, cortando o calculo da nota em quizzes longos antes da gravacao concluir.

Como resolver

  1. Confirme que as tabelas do Tutor existem: abra o phpMyAdmin do host e procure pelas tabelas de tentativa de quiz no banco. Se elas não existirem, e a causa documentada pela Themeum para hosts que pulam a criação na ativacao.
    wp_tutor_quiz_attempts
    wp_tutor_quiz_attempt_answers
  2. Recrie as tabelas reativando o plugin: desative e reative o Tutor LMS para disparar o instalador, que tenta criar as tabelas ausentes. Em hosts onde isso falha, importe o SQL oficial das tabelas pelo phpMyAdmin conforme a doc de troubleshooting.
    Plugins -> Tutor LMS -> Desativar -> Ativar
  3. Aumente o max_input_vars do PHP: quizzes grandes enviam mais de 1000 campos por POST. Eleve o limite no php.ini ou no .htaccess e reinicie o PHP, depois salve o quiz de novo e refaca uma tentativa de teste.
    max_input_vars = 5000
    ; em .htaccess: php_value max_input_vars 5000
  4. Libere o AJAX do Tutor na segurança: no plugin de segurança ou no WAF do host, libere as chamadas ao admin-ajax.php usadas pelo Tutor para salvar tentativa. Abra um quiz, pressione F12, va na aba Rede e confirme que o envio retorna 200, não 403.
    tutor_quiz_attempt_save
    tutor_save_quiz
  5. Tire o quiz do cache e da minificacao de JS: no plugin de cache, exclua as páginas de licao e quiz do cache e remova o JavaScript do Tutor da minificacao e combinacao. Isso evita nonce expirado e script quebrado no envio.
    /wp-content/plugins/tutor/assets/js/
  6. Suba os limites de execução do PHP: se a tentativa some so em quizzes longos, aumente o tempo e a memória do PHP para que o calculo da nota termine antes de gravar.
    max_execution_time = 120
    memory_limit = 256M
APACHE
# .htaccess na raiz do WordPress — eleva os limites de POST que o Tutor LMS
# usa para salvar a tentativa de quiz (campos por requisicao, tempo e memoria).
# Use isto quando o host roda PHP como modulo Apache (mod_php).
php_value max_input_vars 5000
php_value max_input_time 120
php_value max_execution_time 120
php_value memory_limit 256M
php_value post_max_size 32M

Perguntas frequentes

Por que o Tutor LMS quiz não salva respostas mesmo com o aluno enviando?
Na maioria dos casos faltam as tabelas customizadas do Tutor no banco, o max_input_vars do PHP truncou o envio, ou a chamada AJAX para o admin-ajax.php foi bloqueada por segurança. Comece confirmando as tabelas no phpMyAdmin e olhando o retorno da requisicao no console.
Onde vejo as tentativas de quiz dos alunos no Tutor LMS?
Em Tutor LMS, Quiz Attempts. La aparecem as abas All, Passed, Failed e Pending, com a nota e as respostas de cada aluno. Se a tentativa não aparece ou vem com respostas em branco, o problema esta na gravacao, não na exibicao.
Como sei se faltam tabelas do Tutor no banco de dados?
Abra o phpMyAdmin e procure por wp_tutor_quiz_attempts e wp_tutor_quiz_attempt_answers. A Themeum documenta que alguns hosts pulam a criação dessas tabelas na ativacao, e sem elas o quiz não tem onde gravar a tentativa.
O que o max_input_vars tem a ver com o quiz não salvar?
Cada pergunta e opção do quiz vira um campo no POST. No padrão de 1000, um quiz grande estoura esse limite e o PHP descarta os campos extras, perdendo respostas e configurações do builder. Subir o max_input_vars para 5000 resolve esse corte.
Um plugin de segurança pode impedir o quiz de salvar?
Sim. Firewalls e WAFs costumam bloquear chamadas ao admin-ajax.php, inclusive as acoes tutor_quiz_attempt_save e tutor_save_quiz. Se o envio do quiz retorna 403 no console, libere essas rotas na regra de segurança.
O cache pode fazer o aluno perder a tentativa de quiz?
Pode. Se o cache serve um nonce expirado ou a minificacao quebra o JavaScript do Tutor, o envio falha silenciosamente. Exclua as páginas de quiz do cache e tire o JS do Tutor da minificacao para evitar isso.
Reativar o plugin recria as tabelas perdidas?
Em muitos hosts sim: desativar e reativar o Tutor dispara o instalador, que tenta criar as tabelas ausentes. Onde o host bloqueia a criação automática, e preciso importar o SQL oficial das tabelas pelo phpMyAdmin.
Esse problema apaga as tentativas antigas dos alunos?
Recriar tabelas que nunca existiram não apaga dados, porque não havia o que perder. Mas qualquer operacao no banco pede backup antes, já que importar SQL ou recriar tabelas em um banco com dados pode sobrescrever registros existentes.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes