Como corrigir o JetEngine Relations que não conecta posts
O que é JetEngine Relations que não conecta posts?
O recurso Relations do JetEngine cria vínculos entre dois objetos do WordPress, normalmente dois Custom Post Types definidos como Parent object e Child object na relação. Cada conexão é gravada numa tabela própria do banco (a tabela global de relações ou uma tabela separada por relação, dependendo do toggle Register separate DB table). Quando você abre o post e não consegue conectar itens, ou conecta mas a ligação some depois de salvar, o problema está na configuração da relação em JetEngine -> Relations, no objeto escolhido como parent ou child, ou no passo de salvar o post. A aba de conexão só aparece no editor quando o post type que você está editando é exatamente o objeto registrado como parent ou child naquela relação.
Como identificar
- No editor do post não existe a aba ou seção ‘Children …’ no objeto parent (nem ‘Parent …’ no objeto child), então não há onde conectar itens.
- A aba aparece, mas o botão ‘Add New …’ ou ‘Connect …’ está ausente ou desabilitado e nenhum item pode ser vinculado.
- Você conecta um item e clica em Atualizar, mas ao recarregar o post a conexão desapareceu e a lista de relacionados volta vazia.
- Ao salvar o post surge a mensagem de erro do tipo ‘at least one child is required’ ou ‘at least one parent is required’, travando a publicação.
- O Listing Grid ou a query com a macro ‘Related items’ não retorna nada no frontend, mesmo com posts que deveriam estar conectados.
Como prevenir
- Ao criar uma relação nova, já ligue ‘Register controls for parent object’ e ‘Register controls for child object’ antes de tentar conectar posts, para a aba de conexão nascer no editor.
- Deixe ‘Require at least one child’ e ‘Require at least one parent’ desligados até a base de conexões estar populada, evitando travar o salvamento de posts antigos.
- Sempre clique em Atualizar no post depois de conectar itens, porque o vínculo só é gravado na tabela de relações quando o WordPress salva o post.
- Confira se o Parent object e o Child object da relação batem com os post types reais antes de cadastrar conteúdo, para não editar no post type errado.
- Reserve funções com permissão de edição para quem vai gerenciar as relações, já que o painel de itens relacionados depende dos direitos do usuário.
Causa
- O toggle 'Register controls for parent object' (ou 'Register controls for child object') está desligado na relação. Sem ele o JetEngine não registra a aba de conexão no editor do post type correspondente, então não há interface para conectar itens.
- Os toggles 'Allow to create new children from parent' e 'Allow to create new parents from children' estão desligados, então o botão 'Add New ...' não aparece e só dá para conectar itens já existentes, nunca criar novos pela relação.
- O Parent object ou o Child object da relação aponta para um post type diferente do que você está editando. A aba de conexão só é injetada no post type exatamente igual ao objeto registrado, então no post type errado nada aparece.
- Você fez a conexão na aba mas não clicou em Atualizar no post. O JetEngine grava o vínculo na tabela de relações no momento em que o WordPress salva o post, e sem salvar a conexão é descartada.
- O toggle 'Require at least one child' (ou 'Require at least one parent') está ligado e a relação exige um vínculo obrigatório que ainda não existe, então o WordPress bloqueia o salvamento e exibe a mensagem de erro.
- O usuário logado não tem as permissões de função exigidas para editar itens relacionados (o painel do JetEngine só libera conectar, criar e excluir relacionados para funções com os direitos necessários).
Como resolver
- Abra a relação em JetEngine -> Relations e confira os objetos: No painel do WordPress abra a relação e confirme se o Parent object e o Child object apontam para os post types certos. A aba de conexão só nasce no post type igual ao objeto registrado, então um objeto trocado deixa o editor sem onde conectar.
JetEngine -> Relations -> (clique em Edit na relação) Parent object: post type do item pai Child object: post type do item filho - Ative os controles do parent e do child na relação: Nas General Settings da relação ligue os toggles que registram a interface de conexão no editor e permitem criar novos itens pela relação. Sem esses controles a aba de conexão não aparece e o botão de adicionar fica oculto.
Register controls for parent object: On Register controls for child object: On Allow to create new children from parent: On Allow to create new parents from children: On - Revise o vínculo obrigatório e salve a relação: Se a publicação trava com mensagem de item obrigatório, desligue o toggle de exigência enquanto popula as conexões. Depois de ajustar os toggles clique em Update Relation para gravar a configuração antes de voltar ao post.
Require at least one child: Off Require at least one parent: Off Botão: Update Relation - Conecte os itens na aba e salve o post: Abra um post do objeto parent, vá até a seção Children e use Add New ou Connect para vincular os itens. O JetEngine grava o vínculo na tabela de relações apenas quando o WordPress salva o post, então clique em Atualizar para persistir a conexão.
- Editor do post -> seção 'Children ...' -> Connect ...
Botão: Atualizar (Update) - Confirme a permissão do usuário e recarregue o post: Garanta que a função do usuário tem direito de editar itens relacionados, pois o painel só libera conectar e criar relacionados para funções com permissão. Recarregue o post e verifique se a conexão permaneceu na lista de relacionados.
Usuários -> (perfil) -> Função: Administrador ou Editor com permissão Recarregue o editor do post e confira a lista de relacionados
add_action( 'init', function () {
// Diagnostico: liste como o JetEngine registrou as relacoes.
// Rode com WP_DEBUG_LOG ligado e confira o debug.log do site.
if ( ! function_exists( 'jet_engine' ) ) {
return;
}
$relations = jet_engine()->relations->get_active_relations();
foreach ( (array) $relations as $rel ) {
$args = is_object( $rel ) ? $rel->get_relation_args() : array();
error_log( sprintf(
'JetEngine relation #%s | parent: %s | child: %s | sep_table: %s',
$args['id'] ?? '?',
$args['parent_object'] ?? '?',
$args['child_object'] ?? '?',
! empty( $args['db_table'] ) ? 'yes' : 'no'
) );
}
}, 99 );














