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

Como corrigir custom fields do JetEngine que não exibem em cursos do Tutor LMS no WordPress

Time Full Services Time Full Services
Tipo Page Builders
Nome do erro Custom field do JetEngine vazio em curso do Tutor LMS EN: JetEngine custom field not displaying on Tutor LMS course
Severidade Atenção
Descrição O custom field do JetEngine não exibe em cursos do Tutor LMS quando a Meta Box não esta atribuida ao post type courses ou quando o Dynamic Field aponta para um object context diferente do curso, deixando o meta field vazio na página renderizada pelo Tutor.

O que é custom fields do JetEngine que não exibem em cursos do Tutor LMS?

O JetEngine cria custom fields através de Meta Boxes anexadas a um object context específico: um post type, uma taxonomia, um usuário ou uma options page. O valor so e gravado e lido a partir desse contexto. Para exibir o dado, você usa o widget Dynamic Field (no Elementor, Bricks ou nos blocos do Gutenberg) ou um Listing Item, sempre indicando a fonte Meta Data e o nome exato do meta field. Quando a fonte ou o object context não casam com o objeto que esta sendo renderizado, o campo retorna vazio.

O Tutor LMS registra os cursos como um custom post type próprio (courses), com páginas montadas por templates internos do plugin. A incompatibilidade aparece quando a Meta Box do JetEngine foi criada para o post type errado, quando o Dynamic Field e colocado em um Listing ou template cujo objeto atual não e o curso, ou quando o nome do meta field digitado no widget não bate com a chave gravada. Nesses casos o campo existe no banco, mas não aparece na página do curso porque o JetEngine consulta o objeto ou a chave errada na hora de renderizar.

Como identificar

  • O custom field do JetEngine aparece em branco na página do curso do Tutor LMS, mesmo com o valor preenchido na tela de edição do curso.
  • No editor do Listing Item ou do template do Elementor o Dynamic Field mostra ‘No data’ ou simplesmente não renderiza nenhum texto.
  • A Meta Box do JetEngine não aparece na tela de edição do curso (Courses), so em posts ou páginas comuns.
  • O valor do campo some quando o curso e exibido por um Listing Grid, mas aparece quando você abre o post diretamente, ou vice-versa.
  • O shortcode ou a tag dinâmica do JetEngine retorna vazio dentro de um conteúdo que o Tutor LMS injeta na página do curso.
Antes de começar: Antes de alterar Meta Boxes, Listings ou o Object Context de templates em producao, faca um backup do site (arquivos e banco de dados) ou teste primeiro em um ambiente de staging, para reverter caso a página do curso pare de renderizar o conteúdo dinâmico.

Como prevenir

  • Sempre crie a Meta Box do JetEngine já vinculada ao post type Courses ao planejar campos para cursos do Tutor LMS, evitando campos orfaos em Posts ou Pages.
  • Padronize as chaves dos meta fields com nomes curtos e em minusculas, e reutilize exatamente a mesma chave no widget Dynamic Field para evitar erros de digitacao.
  • Documente o Object Context esperado de cada Listing Item e template de curso, para que novos campos herdem o contexto correto do queried object.
  • Valide novos campos sempre na URL pública do curso e não apenas na previa do editor, já que o queried object do Tutor LMS so e resolvido no frontend.

Causa

  • A Meta Box do JetEngine foi criada com a opção 'Meta Box for' apontando para Posts ou Pages, e não para o post type Courses do Tutor LMS, entao o campo nunca e anexado nem gravado no objeto do curso.
  • O widget Dynamic Field esta com a fonte Meta Data correta, mas o nome do meta field digitado no campo Meta Field não bate exatamente com a chave do field registrado no JetEngine (diferenca de letra, espaco ou maiuscula).
  • O Dynamic Field foi colocado dentro de um Listing Item ou template cujo Object Context resolve para um objeto diferente do curso (por exemplo, o post da página pai e não o item do loop), fazendo o JetEngine ler o meta de outro objeto.
  • O Listing Grid que monta a área de cursos esta com a fonte (Listing source / Posts query) apontando para um post type diferente de Courses, de modo que o item renderizado não e o curso que contem o meta field.
  • O custom field foi adicionado ao curso depois que o Tutor LMS já havia salvo o post, e o template do curso e renderizado por um hook do Tutor que não expoe o queried object para o Dynamic Field, deixando o JetEngine sem o objeto atual para consultar.

Como resolver

  1. Atribua a Meta Box do JetEngine ao post type Courses: Abra a Meta Box do JetEngine que contem o campo e confirme que ela esta vinculada ao post type dos cursos do Tutor LMS, e não a Posts ou Pages. Sem esse vinculo o campo nem aparece na edição do curso e nunca grava o valor no objeto certo.
    Painel WP -> JetEngine -> Meta Boxes -> abra a Meta Box do campo
    No bloco 'Meta Box for', selecione 'Post Type' e escolha 'Courses'
    Salve a Meta Box e reabra um curso para confirmar que o campo aparece na edição
  2. Confirme o nome exato do meta field: Compare a chave do field cadastrada no JetEngine com o nome digitado no widget Dynamic Field. O JetEngine le o meta pela chave literal, entao qualquer diferenca de caractere faz o campo retornar vazio.
    Painel WP -> JetEngine -> Meta Boxes -> anote o valor do campo 'Name/ID' do field
    No editor, selecione o widget Dynamic Field -> Source: Meta Data
    No campo 'Meta Field', cole exatamente a mesma chave (sem espacos ou maiusculas extras)
  3. Ajuste o Object Context do Dynamic Field: Se o campo esta dentro de um Listing Item ou de um template, abra as opções de Object Context do widget e aponte para o objeto que e o curso (o item atual do loop ou o queried object), para que o JetEngine leia o meta do curso certo.
    Selecione o widget Dynamic Field -> abra 'Object Context'
    Dentro de um Listing Item, escolha 'Default Object' (o item atual do loop)
    Em um template de página única, use 'Current Post' / 'Queried object' para apontar ao curso
  4. Corrija a fonte do Listing Grid de cursos: Se os cursos são listados por um Listing Grid, confirme que o Listing usado tem a fonte definida como o post type Courses. Um Listing com fonte de outro post type renderiza itens que não contem o meta field.
    Painel WP -> JetEngine -> Listings -> abra o Listing usado na grade
    Em 'Listing source' selecione 'Posts' e em 'From post type' escolha 'Courses'
    No Listing Grid, selecione esse Listing e recarregue a página para validar
  5. Limpe o cache e valide na página do curso: Depois de ajustar contexto e fonte, limpe os caches de página e do Elementor e abra a página real do curso (não so a previa do editor), porque o template do Tutor LMS so resolve o queried object no frontend.
    Painel WP -> Elementor -> Tools -> Regenerate CSS & Data
    Limpe o cache do plugin de cache ativo (ex.: WP Rocket -> Limpar cache)
    Abra a URL pública do curso e confirme que o custom field aparece preenchido
PHP
<?php
/**
 * Exibe um meta field do JetEngine na pagina do curso do Tutor LMS
 * usando o ID do curso renderizado (queried object), com a chave exata.
 */
add_action( 'tutor_course/single/after/title', 'full_jetengine_course_meta' );
function full_jetengine_course_meta() {
    $course_id = get_the_ID();
    if ( ! $course_id ) {
        return;
    }
    // 'duracao_curso' deve bater com a chave registrada na Meta Box do JetEngine.
    $valor = get_post_meta( $course_id, 'duracao_curso', true );
    if ( '' === $valor || null === $valor ) {
        return;
    }
    printf( '<p class="full-course-meta">%s</p>', esc_html( $valor ) );
}

Perguntas frequentes

Por que meu custom field do JetEngine fica vazio na página do curso do Tutor LMS
Na maioria dos casos a Meta Box não esta atribuida ao post type Courses ou o Dynamic Field aponta para um object context diferente do curso. Vincule a Meta Box ao post type Courses e ajuste o Object Context do widget para o queried object do curso.
Como faco a Meta Box do JetEngine aparecer na edição do curso
Abra a Meta Box em JetEngine -> Meta Boxes e no bloco 'Meta Box for' selecione Post Type e escolha Courses. Sem esse vinculo o campo não aparece na tela de edição do curso nem grava o valor no objeto do Tutor LMS.
O nome do meta field precisa ser identico no widget Dynamic Field
Sim. O JetEngine le o meta pela chave literal registrada no field. Qualquer diferenca de letra, espaco ou maiuscula entre a chave cadastrada e o que você digita no campo Meta Field do widget faz o valor retornar vazio.
Por que o campo aparece no editor mas some na página pública do curso
O template do curso e renderizado por hooks do Tutor LMS e o queried object so e resolvido no frontend. Limpe o cache e valide sempre na URL pública do curso, ajustando o Object Context para Current Post ou queried object.
Como exibir o custom field dentro de um Listing Grid de cursos
Confirme que o Listing usado tem a fonte definida como o post type Courses e que o Dynamic Field usa o Default Object do Listing Item. Assim o JetEngine le o meta do curso atual do loop e não de outro objeto.
Posso exibir o campo do JetEngine direto no template do Tutor LMS via código
Pode. Use a função get_post_meta com o ID do curso correto e a chave exata do field dentro de um hook do Tutor LMS que rode na página do curso, garantindo que o objeto consultado seja o curso renderizado.
Por que o valor aparece em um curso e some em outro
Isso indica que so alguns cursos tem o meta gravado, ou que a Meta Box foi atribuida ao post type depois que alguns cursos já existiam. Reabra e salve os cursos afetados para gravar o valor, e confirme que a regra de atribuicao cobre todos eles.
Preciso de cache limpo para ver o custom field atualizado
Sim, na prática e recomendado. Após ajustar Meta Box, fonte do Listing ou Object Context, limpe o cache do Elementor e do plugin de cache e recarregue a página pública, pois a versão em cache pode ainda renderizar o campo vazio.

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