Como corrigir quizzes que não salvam respostas no Tutor LMS
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.
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
- 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 - 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 - 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 - 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 - 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/ - 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
# .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














