Como corrigir os Custom Content Types do JetEngine que não exportam dados no WordPress
O que é JetEngine Custom Content Type que não exporta?
O JetEngine custom content type (CCT) é um recurso da Crocoblock que armazena conteúdo estruturado em uma tabela própria do banco de dados, separada do sistema de posts do WordPress. Cada CCT cria sua própria tabela, no padrão wp_jet_cct_{slug}, em vez de gravar registros em wp_posts e wp_postmeta como acontece com posts e custom post types. Esse desenho deixa o CCT mais leve e rápido para grandes volumes de dados, mas também o torna invisivel para qualquer ferramenta que so leia o sistema de posts.
É exatamente ai que mora a falha de exportação. O exportador nativo do WordPress, em Ferramentas e Exportar, e a maioria dos plugins de export (que consultam posts e postmeta) não enxergam os itens do CCT, entao o arquivo gerado sai vazio ou simplesmente sem os registros do CCT. O JetEngine oferece um Import/Export próprio dentro da tela do CCT justamente porque os dados estão nessas tabelas separadas; quando esse fluxo falha, em geral e por limite de execução do PHP, pela tabela do CCT não ter sido criada, ou por falta de permissão para gerenciar o recurso.
Como identificar
- O arquivo de exportação gerado em Ferramentas e Exportar do WordPress não contem nenhum item do Custom Content Type, apenas posts e páginas.
- Um plugin de export baseado em posts (como WP All Export) não lista o CCT entre os tipos de conteúdo disponiveis para exportar.
- O botão de Export dentro da tela do CCT no JetEngine gera um arquivo vazio ou trava sem baixar nada.
- A exportação de um CCT com muitos itens interrompe no meio com erro de tempo esgotado ou tela em branco (timeout do PHP).
- Os itens aparecem normalmente no Listing Grid e no admin do CCT, mas somem por completo no arquivo exportado.
Como prevenir
- Exporte e faça backup dos Custom Content Types sempre pelo Import/Export do próprio JetEngine, nunca pelo export padrão do WordPress, que ignora as tabelas do CCT.
- Confirme, ao criar um CCT em um novo servidor, que o usuário do MySQL tem privilegio de CREATE TABLE para a tabela do CCT ser gerada de fato.
- Antes de exportar CCTs grandes, ajuste max_execution_time e memory_limit no servidor para evitar timeouts no meio do processo.
- Documente quais perfis de usuário podem gerenciar e exportar o JetEngine, evitando que falte permissão na hora de gerar o arquivo.
Causa
- A ferramenta de export usada le wp_posts e wp_postmeta, mas os itens do CCT ficam gravados na tabela própria wp_jet_cct_{slug}, fora do sistema de posts, entao o exportador não alcança esses registros.
- A tabela do CCT não foi criada no banco porque o usuário do MySQL não tinha privilegio de CREATE TABLE quando o CCT foi salvo; sem a tabela, não ha dados para exportar e o export sai vazio.
- O export do CCT com muitos itens estoura o max_execution_time ou o memory_limit do PHP e e abortado pelo servidor antes de montar o arquivo completo.
- O usuário logado não tem a capability necessaria para gerenciar o JetEngine, entao a opção de Export do CCT fica indisponivel ou não processa a requisicao.
- Campos relacionais ou de meta do CCT estão gravados de forma serializada na coluna da tabela, e a ferramenta de export externa não desserializa esse valor, gerando colunas vazias no arquivo final.
Como resolver
- Use o Import/Export nativo do próprio CCT: Como os itens vivem em tabela própria, o caminho correto e exportar pelo JetEngine, não pelo export do WordPress. Abra o Custom Content Type no painel do JetEngine e use a opção de Export do próprio CCT para gerar o arquivo com os itens daquela tabela.
Painel WP -> JetEngine -> Custom Content Types Abra o CCT desejado e localize a opção Import/Export Clique em Export para baixar o arquivo com os itens do CCT - Confirme que a tabela do CCT existe no banco: Se o export sai vazio, verifique se a tabela do CCT foi realmente criada. Liste as tabelas com prefixo jet_cct no banco; se ela não existir, o usuário do MySQL provavelmente não tinha privilegio de CREATE TABLE quando o CCT foi salvo e nenhum dado foi gravado.
SHOW TABLES LIKE '%jet_cct%'; SELECT COUNT(*) FROM wp_jet_cct_SEU_SLUG; Ajuste o prefixo wp_ para o prefixo real do seu banco - Aumente os limites de execução do PHP: Para CCTs com muitos itens, o export pode estourar o tempo ou a memória do PHP e ser abortado. Aumente max_execution_time e memory_limit no servidor e repita o export. Aplique os valores via php.ini, .user.ini ou painel da hospedagem.
max_execution_time = 300 memory_limit = 512M Reinicie o PHP-FPM ou aguarde a hospedagem aplicar - Garanta a permissão de gerenciar o JetEngine: Faça o export logado com um usuário Administrador. Se um perfil customizado precisa exportar, conceda a capability que libera o gerenciamento do JetEngine para esse perfil, senao a opção de Export do CCT não fica disponível.
Painel WP -> Usuários -> confirme o papel Administrador Use um gerenciador de papeis para conceder a capability de gerenciar opções do JetEngine ao perfil - Como alternativa, extraia direto da tabela com a JetEngine API: Quando o Import/Export da interface não serve (export programatico, integração ou volume alto), leia os itens direto da tabela do CCT pela API do JetEngine em PHP, que já desserializa os campos. Use o snippet da seção de código para obter os itens em array e gerar seu próprio arquivo.
Crie um snippet PHP (mu-plugin ou Code Snippets) Chame a API de query do CCT do JetEngine para ler os itens Percorra o resultado e grave o CSV ou JSON desejado
<?php
// Le os itens de um Custom Content Type do JetEngine direto da tabela
// (a API ja desserializa os campos) e exporta como CSV.
add_action( 'admin_post_full_export_cct', 'full_export_jetengine_cct' );
function full_export_jetengine_cct() {
if ( ! current_user_can( 'manage_options' ) ) {
wp_die( 'Sem permissao.' );
}
// Slug do CCT alvo (ajuste para o seu).
$cct_slug = 'imoveis';
// Guarda: so segue se o modulo de CCT do JetEngine existir.
if ( ! function_exists( 'jet_engine' ) || ! jet_engine()->modules->is_module_active( 'custom-content-types' ) ) {
wp_die( 'Modulo Custom Content Types do JetEngine inativo.' );
}
$cct = Jet_EngineModulesCustom_Content_TypesModule::instance()->manager->get_content_types( $cct_slug );
if ( ! $cct ) {
wp_die( 'CCT nao encontrado: ' . esc_html( $cct_slug ) );
}
// Le todos os itens (a API desserializa campos relacionais/meta).
$items = $cct->get_items();
if ( empty( $items ) ) {
wp_die( 'Nenhum item no CCT (verifique se a tabela foi criada).' );
}
header( 'Content-Type: text/csv; charset=utf-8' );
header( 'Content-Disposition: attachment; filename=cct-' . $cct_slug . '.csv' );
$out = fopen( 'php://output', 'w' );
fputcsv( $out, array_keys( $items[0] ) ); // cabecalho
foreach ( $items as $item ) {
fputcsv( $out, $item );
}
fclose( $out );
exit;
}














