# Como corrigir a exportação de dados de alunos que falha no Tutor LMS no WordPress

A exportação de dados de aluno no Tutor LMS falha quando o addon Reports do Tutor LMS Pro está desativado, quando o botão Download CSV em Analytics não responde por conflito de JavaScript, ou quando o servidor interrompe o download por limite de PHP, gerando um arquivo CSV vazio ou nenhum download.

## O que é exportação de dados de alunos no Tutor LMS?

A exportação de dados de aluno no Tutor LMS é o recurso que transforma os relatórios de alunos matriculados, progresso e vendas em um arquivo CSV baixável. Segundo a documentação oficial da Themeum, esse recurso pertence ao addon Reports, exclusivo do Tutor LMS Pro: o administrador o ativa em Tutor LMS Pro e o exporta pelo Frontend Dashboard em Analytics, clicando no botão Download CSV. Sem o addon ativo, não existe botão de exportação para acionar.

O erro aparece de três formas práticas. O botão Download CSV não está presente porque o addon Reports nunca foi habilitado. O botão existe mas não dispara o download, normalmente por um conflito de JavaScript no painel que bloqueia a requisição AJAX da exportação. Ou o download começa e entrega um CSV vazio ou truncado, quando o volume de alunos estoura limites de PHP como o tempo máximo de execução ou a memória disponível, e o servidor encerra o processo antes de montar o arquivo completo.

## Como identificar

- O botão 'Download CSV' não aparece na aba Analytics do Frontend Dashboard, mesmo com o Tutor LMS Pro ativo.
- Ao clicar em 'Download CSV' nada acontece: nenhum arquivo é baixado e a página não dá retorno.
- O arquivo CSV é baixado, mas abre vazio ou só com o cabeçalho das colunas, sem as linhas de alunos.
- O download começa e é interrompido na metade, gerando um CSV truncado quando há muitos alunos matriculados.
- No console do navegador (F12) surge um erro de JavaScript ou uma resposta 500 da requisição admin-ajax ao tentar exportar.
- A página de relatório fica em 'carregando' indefinidamente e o navegador acusa tempo de requisição esgotado durante a exportação.

**Antes de começar:** Os relatórios de alunos contêm dados pessoais (nome e e-mail). Antes de editar limites de PHP em arquivos do servidor ou desativar plugins em produção, faça backup do site e do banco de dados ou teste em staging, e trate o CSV exportado como dado sensível, removendo-o de pastas públicas após o uso.

## Como prevenir

- Mantenha o addon Reports do Tutor LMS Pro sempre ativo em sites que precisam exportar dados de alunos, para que o botão Download CSV nunca dependa de reativação na hora.
- Dimensione max_execution_time e memory_limit do PHP conforme o número de alunos cresce, validando a exportação em staging após cada salto grande de matrículas.
- Mantenha admin-ajax.php fora de regras agressivas de cache e do bloqueio do firewall, já que a exportação do Tutor LMS depende dessa requisição.
- Atualize Tutor LMS Pro e WordPress na versão estável mais recente e valide a exportação em staging antes de subir, acompanhando mudanças no addon Reports.

Erros relacionados

- [Como corrigir relatórios que não exibem progresso no Tutor LMS](https://full.services/wp-fixer/corrigir-reports-progresso-tutor-lms/)
- [Como corrigir o progresso do aluno que não atualiza no Tutor LMS](https://full.services/wp-fixer/corrigir-progresso-aluno-tutor-lms/)
- [Como corrigir a importação de cursos que falha no Tutor LMS](https://full.services/wp-fixer/corrigir-importacao-curso-tutor-lms/)

## Causa

- O addon Reports do Tutor LMS Pro está desativado em Tutor LMS Pro -> Add-ons, então o menu Report e o botão Download CSV em Analytics nem chegam a ser renderizados (a doc oficial coloca a exportação dentro desse addon).
- O usuário que tenta exportar não é administrador nem instrutor com a capability adequada, então a ação de exportação do Frontend Dashboard é negada e devolve resposta vazia.
- Um conflito de JavaScript com outro plugin ou tema interrompe o script do painel do Tutor LMS antes da requisição admin-ajax de exportação disparar, fazendo o clique em Download CSV não responder.
- O número de alunos matriculados ultrapassa o limite de max_execution_time ou de memory_limit do PHP, e o servidor encerra o processo de geração do CSV no meio, devolvendo um arquivo truncado ou vazio.
- Um plugin de cache ou de segurança (firewall/WAF) bloqueia ou serve uma versão em cache da requisição admin-ajax.php de exportação, impedindo que o CSV recém-gerado seja entregue ao navegador.

## Como resolver

1. Ative o addon Reports no Tutor LMS Pro: A exportação de dados de aluno só existe com o addon Reports do Tutor LMS Pro ligado. Ative-o e confirme que o menu Report passa a aparecer no painel do Tutor LMS, conforme a documentação oficial da Themeum.

```
Painel WP -> Tutor LMS Pro -> Add-ons
Localize 'Reports' e ative a chave (toggle)
Confirme que o menu 'Report' agora aparece sob Tutor LMS no admin
```

2. Exporte pelo caminho correto do Frontend Dashboard: A exportação é feita pelo painel do usuário, não pelo admin. Acesse o Frontend Dashboard, abra Analytics e clique em Download CSV para baixar os dados de alunos e vendas em CSV, como indica a doc do addon Reports.

```
Acesse SeuSite/dashboard (Frontend Dashboard)
Abra a aba Analytics -> Export
Clique no botão 'Download CSV'
```

3. Confirme a permissão de quem exporta: A exportação responde vazio quando o usuário não tem capability para acessar os relatórios. Faça a exportação como administrador, ou garanta que o instrutor tenha permissão de ver os relatórios dos próprios cursos antes de tentar baixar o CSV.

```
Faça login como Administrador e repita a exportação para isolar problema de permissão
Painel WP -> Usuários -> confirme o papel do usuário que exporta (Administrador ou Instrutor)
Em Tutor LMS Pro -> Add-ons, confirme que o instrutor tem acesso ao relatório dos próprios cursos
```

4. Aumente os limites de PHP para volumes grandes: Quando o CSV vem vazio ou truncado com muitos alunos, o servidor está encerrando o processo por estourar tempo ou memória. Eleve max_execution_time e memory_limit e tente exportar de novo. Use staging ou faça backup antes de mexer em arquivos do servidor.

```
Edite o php.ini (ou wp-config.php / .htaccess conforme o host)
max_execution_time = 300
memory_limit = 512M
Reinicie o PHP/servidor e refaça a exportação
```

5. Descarte conflito de JavaScript, cache e firewall: Se o botão Download CSV não responde mesmo com tudo certo, isole a interferência. Limpe o cache, libere o admin-ajax.php no firewall e desative os demais plugins um a um, recarregando o painel a cada teste para achar o que bloqueia a requisição de exportação.

```
Limpe o cache do plugin de cache e do CDN/Cloudflare
Adicione admin-ajax.php à allowlist do firewall/WAF (não cachear)
Painel WP -> Plugins -> desative os demais plugins um a um e teste o Download CSV a cada vez
Abra o console do navegador (F12 -> Console) e observe o erro ao clicar em exportar
```


## Código

```php
<?php
/**
 * Contorno: exporta as matriculas do Tutor LMS em CSV quando o botao do painel falha.
 * Acesse /wp-admin/admin-post.php?action=full_tutor_export_alunos como administrador.
 */
add_action( 'admin_post_full_tutor_export_alunos', 'full_tutor_export_alunos' );
function full_tutor_export_alunos() {
    if ( ! current_user_can( 'manage_options' ) ) {
        wp_die( 'Permissao negada.' );
    }

    // Matriculas do Tutor LMS sao posts do tipo 'tutor_enrolled'.
    $matriculas = get_posts( array(
        'post_type'      => 'tutor_enrolled',
        'post_status'    => 'completed',
        'posts_per_page' => -1,
        'fields'         => 'ids',
    ) );

    header( 'Content-Type: text/csv; charset=utf-8' );
    header( 'Content-Disposition: attachment; filename=alunos-tutor-lms.csv' );
    $out = fopen( 'php://output', 'w' );
    fputcsv( $out, array( 'aluno', 'email', 'curso_id', 'data' ) );

    foreach ( $matriculas as $id ) {
        $post  = get_post( $id );
        $user  = get_userdata( $post->post_author );
        if ( ! $user ) {
            continue;
        }
        fputcsv( $out, array(
            $user->display_name,
            $user->user_email,
            $post->post_parent, // ID do curso
            $post->post_date,
        ) );
    }
    fclose( $out );
    exit;
}
```

## Perguntas frequentes

### Por que não aparece o botão de exportar dados de aluno no Tutor LMS

Na maioria dos casos o addon Reports do Tutor LMS Pro está desativado. A exportação pertence a esse addon, então ative-o em Tutor LMS Pro -> Add-ons e o botão Download CSV passa a aparecer na aba Analytics do Frontend Dashboard.

### Preciso do Tutor LMS Pro para exportar dados de alunos

Sim. Segundo a documentação oficial da Themeum, a exportação de relatórios em CSV faz parte do addon Reports, que é exclusivo do Tutor LMS Pro. Na versão gratuita não há o botão Download CSV para baixar os dados de alunos.

### Onde fica o Download CSV dos relatórios de alunos no Tutor LMS

A exportação é feita pelo Frontend Dashboard, não pelo admin. Acesse SeuSite/dashboard, abra a aba Analytics e clique em Export, depois em Download CSV para baixar os dados de alunos e vendas em arquivo CSV.

### Por que o CSV exportado do Tutor LMS vem vazio ou pela metade

Isso costuma ser limite de PHP. Com muitos alunos, o servidor estoura o max_execution_time ou o memory_limit e encerra a geração do arquivo antes de terminar. Eleve esses limites no servidor e refaça a exportação para gerar o CSV completo.

### Cliquei em Download CSV e nada acontece, o que fazer

Quase sempre é conflito de JavaScript, cache ou firewall bloqueando a requisição admin-ajax. Limpe o cache, libere o admin-ajax.php no firewall e desative os demais plugins um a um, recarregando o painel a cada teste para achar o que trava a exportação.

### Um instrutor consegue exportar os dados de alunos no Tutor LMS

Depende da permissão. A exportação responde vazio quando o usuário não tem capability para acessar os relatórios. Faça a exportação como administrador para confirmar, e garanta que o instrutor tenha acesso aos relatórios dos próprios cursos.

### Posso exportar os dados de alunos por código em vez do botão

Sim, dá para gerar um CSV das matrículas por código quando o painel falha. Um script que consulta as matrículas e usa fputcsv monta o arquivo no servidor, mas use isso como contorno e mantenha o addon Reports como o caminho oficial.

**Fonte:** [Tutor LMS — Reports Addon (documentação oficial Themeum)](https://docs.themeum.com/tutor-lms/addons/reports/)
