5.1 KiB
5.1 KiB
name, description, layer
| name | description | layer |
|---|---|---|
| jetengine | Desenvolvimento com JetEngine (Crocoblock). Cobre CPT, CCT, Meta Boxes, Taxonomias, Relations, Query Builder, Listing Grid/Map, Dynamic Content, Dynamic Tags, Macros, Profile Builder, REST API e automação headless. | wiki |
/jetengine — JetEngine Development
JetEngine é o núcleo do ecossistema Crocoblock: cria CPT, CCT, Meta Boxes, Relations, Queries e Listings com conteúdo dinâmico para Elementor.
CPT vs CCT — Escolha Crítica
| Custom Post Type (CPT) | Custom Content Type (CCT) | |
|---|---|---|
| Storage | wp_posts + wp_postmeta |
Tabela SQL própria wp_jet_cct_{slug} |
| Performance | Lenta em queries complexas | Muito rápida (colunas reais) |
| Compatibilidade | Total WP ecosystem | Limitada (sem taxonomies nativas) |
| REST API | /wp-json/wp/v2/{slug} |
/wp-json/jet-cct/{slug} |
| Automação | wp_insert_post() |
CCT_Data_Handler ou SQL directo |
| Usar quando | Conteúdo editorial, SEO, plugins WP | Alta performance, CRUD automatizado, dashboards |
Regra prática: CPT para conteúdo público/SEO; CCT para dados internos, integrações e alta escala.
Criar CPT
JetEngine > Post Types > Add New
├── Slug (único, sem espaços, lowercase)
├── Labels (Singular / Plural)
├── Suporte: title, editor, thumbnail, excerpt, custom-fields
├── REST API: Activar para integração externa
├── Archive: Activar se precisar de página de listagem
└── Admin Columns: Mostrar meta fields na tabela admin
Meta Boxes e Campos
Tipos de Campos
| Tipo | Uso |
|---|---|
text |
Texto simples |
textarea |
Texto longo |
wysiwyg |
Editor rich text |
number |
Valor numérico |
select |
Dropdown de opções |
checkbox |
Verdadeiro/falso |
checkbox-list |
Múltipla selecção |
radio |
Opção única |
date |
Data (timestamp) |
media |
Upload de ficheiro/imagem |
gallery |
Múltiplas imagens |
repeater |
Campo repetível (sub-campos) |
posts |
Relação simples (seleccionar posts) |
color-picker |
Cor HEX |
map |
Coordenadas geográficas |
html |
HTML estático (apenas display) |
Repeater — Estrutura
Repeater Field "galeria_servicos":
├── sub-campo: imagem (media)
├── sub-campo: titulo (text)
└── sub-campo: descricao (textarea)
Aceder em PHP:
$items = get_post_meta($post_id, 'galeria_servicos', true);
foreach ($items as $item) { ... }
Relations
Tipos de Relação
| Tipo | Exemplo |
|---|---|
| One-to-Many | 1 Empresa → N Colaboradores |
| Many-to-Many | N Projectos ↔ N Tags custom |
| Self-relation | Artigo relacionado com outros artigos |
| User-to-Post | Utilizador → N Reservas |
Tabela SQL das Relações
-- wp_jet_rel_default
-- parent_object_id | child_object_id | rel_id (hash da relação)
-- Ler todos os filhos de um pai
SELECT child_object_id
FROM wp_jet_rel_default
WHERE parent_object_id = 123
AND rel_id = 'relacao_empresa_colaboradores';
-- Ler o pai a partir de um filho
SELECT parent_object_id
FROM wp_jet_rel_default
WHERE child_object_id = 456
AND rel_id = 'relacao_empresa_colaboradores';
Importante: Nunca editar esta tabela directamente via SQL para criar relações — usar a API PHP do JetEngine (ver references/automation.md).
Query Builder
Substitui o WP_Query com interface visual. Ligar ao Listing Grid.
Tipos de Query
| Tipo | Usa |
|---|---|
| Posts | CPT, posts, páginas |
| Terms | Taxonomias |
| Users | Utilizadores WP |
| Custom Content Type | Tabelas CCT |
| REST API | Endpoint externo |
Configurar Query Posts
JetEngine > Query Builder > Add New
├── Query Type: Posts
├── Post Type: [seleccionar CPT]
├── Order By: date / meta_value / rand / menu_order
├── Meta Query: adicionar condições de meta fields
├── Tax Query: filtrar por taxonomia
└── Author: específico ou current user
Usar no Listing Grid
Elemento Elementor: Listing Grid
├── Listing Item: [seleccionar Listing Template]
├── Use Custom Query: YES → seleccionar Query criado acima
├── Items per page: N
└── Pagination: Activar se necessário
Listing Grid e Listing Template
Criar Listing Template
JetEngine > Listings > Add New
├── Template Type: Default / Popup
├── Content From: Posts / CCT / User / Term
└── Editar com Elementor → usar Dynamic Tags
Dynamic Tags no Listing Template
Post Title → {{ post_title }}
Field de Meta → Meta Field → seleccionar nome do campo
Imagem → Featured Image → meta field media
Link → Post URL / Custom Field URL
Relação → Relation Field
Listing Map
JetEngine > Listings > Add New > Template Type: Map
├── Configurar campo de coordenadas (tipo: map no meta box)
├── Google Maps API Key: WP Admin > JetEngine > Settings
└── Ligar ao Query Builder
Dynamic Content e Macros
Macros Comuns
%current_user_id% # ID do utilizador logado
%current_post_id%