🎉 USE O CUPOM FIM.DE.SEMANA.FULL | 20% OFF acima de R$ 100,00

Como corrigir custom field do ACF que não exibe em cursos do Tutor LMS no WordPress

Time Full Services Time Full Services
Tipo Outros erros
Nome do erro Custom field do ACF não exibe em cursos do Tutor LMS EN: ACF custom field not showing on Tutor LMS courses
Severidade Atenção
Descrição No ACF Tutor LMS, o custom field não exibe no curso quase sempre porque a regra de localização do grupo de campos não aponta para o tipo de post courses, ou porque o template do curso chama get_field sem o ID do curso correto, deixando o valor do meta vazio na página.

O que é ACF custom field que não exibe em cursos do Tutor LMS?

Um custom field do ACF Tutor LMS é um campo personalizado que você anexa ao tipo de post de cursos (o CPT courses, registrado pelo Tutor LMS) por meio de um grupo de campos do ACF, e que depois é lido na página do curso com get_field ou the_field. O problema aparece quando esse campo, visível e preenchido no editor do curso, simplesmente não aparece na página pública do curso, ou some também do próprio editor.

A documentação do ACF é direta neste ponto: um grupo de campos só aparece em um tipo de post quando a regra de localização casa com aquele tipo de post, e o valor só é recuperado quando get_field recebe o objeto ou o ID do post certo. Como o Tutor LMS usa um CPT próprio para cursos e renderiza a página por templates próprios (single de curso e loop de curso), os dois pontos de falha mais comuns são a regra de localização não mirar o CPT courses e o template chamar get_field fora do contexto do curso, sem passar o ID do curso. Quando isso ocorre, o postmeta existe no banco, mas nada é impresso na tela.

Como identificar

  • O valor do campo aparece preenchido ao editar o curso no painel, mas a página pública do curso no Tutor LMS não mostra o conteúdo do campo em lugar nenhum.
  • A chamada the_field(‘meu_campo’) ou get_field(‘meu_campo’) retorna vazio ou false dentro do template de curso, mesmo com o campo salvo.
  • O grupo de campos do ACF nem chega a aparecer no editor do curso, embora apareça normalmente em posts e páginas comuns.
  • O campo aparece na lista de cursos (loop) mas some na página individual do curso, ou o contrário, porque o ID do post muda entre os dois contextos.
  • Ao usar get_field sem informar o ID, o valor exibido é o de outro post (a página de arquivo ou a Home), e não o do curso aberto.
Antes de começar: Antes de editar templates do Tutor LMS ou alterar regras de localização em produção, faça um backup do site (arquivos e banco de dados) ou trabalhe primeiro em um ambiente de staging, para poder reverter caso a página do curso quebre. Edite templates em um tema filho, nunca direto na pasta do plugin, para não perder a alteração na próxima atualização.

Como prevenir

  • Ao criar campos para cursos, defina a regra de localização do grupo já mirando o tipo de post Curso do Tutor LMS, e não Post ou Página por hábito.
  • Sempre passe o ID do curso como segundo argumento de get_field nos templates do Tutor LMS, em vez de confiar no post global dentro dos loops do plugin.
  • Padronize a leitura dos campos com o nome exato do field name do ACF e documente as meta keys usadas em cada template de curso.
  • Sobrescreva os templates do Tutor LMS sempre em tema filho e chame wp_reset_postdata após qualquer loop secundário para não corromper o contexto do post.

Causa

  • A regra de localização do grupo de campos no ACF está apontando para Post ou Página, e não para a opção Tipo de Post igual a Curso (o CPT courses do Tutor LMS), então o grupo nunca casa com a tela de edição do curso.
  • O template do curso (single de curso ou loop renderizado pelo Tutor LMS) chama get_field('campo') sem passar o ID do curso, e nesse contexto o get_the_ID retorna o ID da página de arquivo do Tutor LMS, não o do curso, devolvendo valor vazio.
  • O grupo de campos está com o status Active desligado em ACF, Grupos de Campos, fazendo o campo sumir tanto do editor do curso quanto da leitura por get_field.
  • A meta key consultada no template difere do nome real do campo no ACF (por exemplo um typo ou um campo dentro de um grupo de repetição), então get_field('campo') não encontra o postmeta gravado.
  • Um template de curso sobrescrito do Tutor LMS roda dentro de um loop secundário sem wp_reset_postdata, deixando o objeto global de post apontando para outro item quando o the_field é executado.

Como resolver

  1. Aponte a regra de localização para o tipo de post Curso: Em ACF, Grupos de Campos, abra o grupo que deveria aparecer no curso e ajuste a regra de localização para mirar o tipo de post de cursos do Tutor LMS. O dropdown do ACF lista os tipos de post registrados, então o curso aparece como uma opção depois que o Tutor LMS está ativo.
    Painel WP -> ACF -> Grupos de Campos -> abra o grupo
    Em Localização, defina: Tipo de Post -> é igual a -> Curso
    Salve o grupo de campos
  2. Confirme que o grupo de campos está Ativo: Ainda na tela do grupo de campos, garanta que o status está marcado como Active. Um grupo inativo não aparece no editor do curso nem é lido por get_field na página pública.
    Painel WP -> ACF -> Grupos de Campos
    Confirme que o grupo está com o status Active (Ativo) e não Inactive
  3. Passe o ID do curso ao chamar get_field no template: No template de curso do Tutor LMS, nunca confie no post global dentro de loops do plugin. Recupere o ID do curso de forma explícita com get_the_ID dentro do The Loop, ou guarde o ID antes do loop secundário, e passe esse ID como segundo argumento de get_field para ler o meta do curso certo.
    Edite o template do curso (tema filho ou pasta de override do Tutor LMS)
    Use: $course_id = get_the_ID();
    Use: echo get_field('meu_campo', $course_id);
  4. Confira o nome exato do campo no ACF: Abra o campo dentro do grupo e copie o Nome do Campo (field name), não o rótulo. A meta key usada em get_field precisa ser idêntica a esse nome. Para campos dentro de grupos ou repetidores, use a função correspondente do ACF em vez de get_field direto.
    Painel WP -> ACF -> Grupos de Campos -> abra o campo
    Copie o valor do campo Nome (ex.: carga_horaria) e use o mesmo em get_field('carga_horaria', $course_id)
  5. Restaure o post global após loops secundários: Se o template do curso usa WP_Query ou loops auxiliares antes de imprimir o campo, chame wp_reset_postdata após cada loop para devolver o objeto global de post ao curso atual. Sem isso, the_field lê o meta do último item do loop, não o do curso.
    Após cada WP_Query no template, adicione: wp_reset_postdata();
    Só então chame the_field('meu_campo') para o curso atual
PHP
<?php
/**
 * Exibe um ACF custom field na pagina de curso do Tutor LMS
 * de forma segura, passando sempre o ID do curso.
 * Cole no template single de curso (override em tema filho).
 */
$course_id = get_the_ID();
$carga = get_field( 'carga_horaria', $course_id );

if ( $carga ) {
    printf(
        '<p class="tutor-course-meta">Carga horaria: %s</p>',
        esc_html( $carga )
    );
}

// Exemplo com loop secundario: resetar o post global depois.
$relacionados = new WP_Query( array(
    'post_type'      => 'courses',
    'posts_per_page' => 3,
) );
while ( $relacionados->have_posts() ) {
    $relacionados->the_post();
    echo esc_html( get_field( 'subtitulo', get_the_ID() ) );
}
wp_reset_postdata(); // devolve o post global ao curso atual

Perguntas frequentes

Por que o ACF custom field aparece no editor do curso mas não na página do Tutor LMS
Na maioria das vezes o template do curso chama get_field sem o ID do curso, e nesse contexto o ID global é o da página de arquivo do Tutor LMS, não o do curso aberto. Recupere o ID com get_the_ID e passe como segundo argumento de get_field.
Como faço o grupo de campos do ACF aparecer no tipo de post de cursos
Em ACF, Grupos de Campos, ajuste a regra de localização para Tipo de Post é igual a Curso. Segundo a documentação do ACF, um grupo só aparece em um tipo de post quando a regra de localização casa com aquele tipo, e o Tutor LMS registra o curso como um tipo de post próprio.
Preciso passar o ID do post no get_field dentro do Tutor LMS
Sim, é o mais seguro. Nos templates e loops do Tutor LMS o post global pode apontar para outro item, então passe o ID do curso como segundo argumento, por exemplo get_field('campo', $course_id), para ler o meta do curso correto.
O get_field retorna vazio mesmo com o campo preenchido, o que fazer
Confirme três coisas: que o grupo está Active, que a regra de localização mira o curso, e que o nome usado em get_field é idêntico ao field name do campo no ACF. Um typo no nome ou um campo dentro de repetidor faz a função não encontrar o postmeta.
Por que o campo mostra o valor de outro curso ou da página de arquivo
Isso acontece quando um loop secundário no template não foi resetado. Chame wp_reset_postdata após cada WP_Query para devolver o post global ao curso atual antes de imprimir o campo com the_field.
Funciona com campos dentro de grupos ou repetidores do ACF no curso
Funciona, mas não com get_field direto na chave do subcampo. Use as funções do ACF para repetidor (have_rows e the_sub_field) ou recupere o grupo inteiro com get_field e acesse o índice, sempre informando o ID do curso quando estiver fora do loop principal.
O Tutor LMS interfere no funcionamento do ACF
O Tutor LMS não bloqueia o ACF. Ele apenas registra um tipo de post próprio para cursos e renderiza a página por templates próprios. Os campos funcionam normalmente desde que a regra de localização mire o curso e o get_field receba o ID certo no template.

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