npm package: @gustavojosemelo/n8n-nodes-wordpress
Description: n8n community node for WordPress REST API with Custom Post Types, ACF fields, meta data, taxonomies and Application Password authentication
Author: Gustavo José Silva Melo
Latest version: 1.5.0

# n8n-nodes-wordpress-extended

Node para n8n que estende a integração com a **API REST do WordPress**, oferecendo suporte completo a:

- **Custom Post Types** (CPT) com dropdown dinâmico
- **Campos ACF** (Advanced Custom Fields) via REST API
- **Metadados** (custom fields/meta) com key-value pairs
- **Taxonomias personalizadas** com dropdown dinâmico
- **Additional Fields** completos (slug, excerpt, autor, imagem destacada, template, formato, etc.)
- **Upload de mídia** com binary data
- **Usuários e Comentários**
- **Paginação automática** (retornar todos os registros)
- **Autenticação via Senha de Aplicação** (Application Password)

## Instalação

### Via n8n Community Nodes (recomendado)

1. Acesse **Settings → Community Nodes**
2. Clique em **Install a community node**
3. Digite: `@gustavojosemelo/n8n-nodes-wordpress-extended`
4. Clique em **Install**

### Manual (self-hosted)

```bash
cd ~/.n8n/custom
npm install @gustavojosemelo/n8n-nodes-wordpress-extended
# Reinicie o n8n
```

## Configuração

### 1. Criar Senha de Aplicação no WordPress

1. Acesse **Usuários → Perfil** no wp-admin
2. Role até **Senhas de Aplicação**
3. Digite um nome (ex: "n8n") e clique em **Adicionar nova senha de aplicação**
4. Copie a senha gerada

### 2. Configurar Credenciais no n8n

1. Em qualquer workflow, adicione o node **WordPress Extended**
2. Clique em **Create new credential**
3. Preencha:
   - **URL do WordPress**: `https://seusite.com.br` (sem `/wp-json`)
   - **Usuário**: seu username do WordPress
   - **Senha de Aplicação**: a senha gerada no passo anterior

## Recursos & Operações

| Recurso | Criar | Obter | Listar | Atualizar | Excluir |
|---------|-------|-------|--------|-----------|---------|
| Post | ✅ | ✅ | ✅ | ✅ | ✅ |
| Página | ✅ | ✅ | ✅ | ✅ | ✅ |
| Custom Post Type | ✅ | ✅ | ✅ | ✅ | ✅ |
| Taxonomia | ✅ | ✅ | ✅ | ✅ | ✅ |
| Mídia | ✅ (upload) | ✅ | ✅ | — | ✅ |
| Usuário | ✅ | ✅ | ✅ | ✅ | ✅ |
| Comentário | ✅ | ✅ | ✅ | ✅ | ✅ |

## Campos ACF

Para usar campos ACF via REST API:

1. No WordPress, edite o **Grupo de Campos ACF**
2. Em **Configurações do Grupo**, ative **Show in REST API**
3. No n8n, use o campo **Campos ACF** (JSON):

```json
{
  "campo_texto": "Valor do texto",
  "campo_imagem": 456,
  "campo_repeater": [
    { "sub_campo": "valor1" },
    { "sub_campo": "valor2" }
  ],
  "campo_select": "opcao_1",
  "campo_verdadeiro_falso": true
}
```

## Metadados (Meta Fields)

Use o campo **Metadados (meta)** para enviar custom fields registrados com `show_in_rest`:

- Chave: nome do meta field
- Valor: valor a ser gravado

> **Nota**: Os meta fields precisam estar registrados com `register_post_meta()` e `show_in_rest => true` no WordPress.

## Filtros de Busca

Na operação **Listar**, você pode combinar:

- **Busca por texto** (search)
- **Status** (publish, draft, pending, etc.)
- **Categorias/Tags** (por ID)
- **Autor** (por ID)
- **Datas** (após/antes)
- **Ordenação** (data, título, ID, slug, etc.)
- **Campos específicos** (_fields para otimizar resposta)
- **Paginação** (per_page, page, offset)
- **Retornar Todos** com limite máximo configurável

## Custom Post Types

O dropdown de **Tipo de Post** carrega dinamicamente todos os CPTs registrados no WordPress que possuem `show_in_rest => true`. Isso inclui qualquer CPT criado via:

- ACF (Tipos de Post personalizados)
- Plugins como CPT UI
- Código custom com `register_post_type()`

## Taxonomias Personalizadas

Similar aos CPTs, o dropdown de **Taxonomia** carrega dinamicamente todas as taxonomias registradas. Você pode:

- Criar/editar/excluir termos
- Atribuir termos a CPTs durante criação/edição

## Exemplos de Uso

### Criar uma Vaga (CPT) com ACF

1. Recurso: **Custom Post Type**
2. Tipo de Post: **Vagas** (carregado dinamicamente)
3. Operação: **Criar**
4. Título: `{{ $json.titulo_vaga }}`
5. Status: **Publicar**
6. Campos ACF:
```json
{
  "salario": "R$ 5.000",
  "cidade": "Campina Grande",
  "regime": "CLT",
  "empresa": "Empresa ABC"
}
```

### Buscar Posts por Categoria com ACF

1. Recurso: **Post**
2. Operação: **Listar**
3. Filtros:
   - Status: publish
   - Categorias: `5` (ID da categoria)
   - Incluir ACF: `true`

## Desenvolvimento

```bash
git clone https://github.com/gustavojosemelo/n8n-nodes-wordpress-extended.git
cd n8n-nodes-wordpress-extended
npm install
npm run build

# Para testar localmente
npm link
cd ~/.n8n/custom
npm link @gustavojosemelo/n8n-nodes-wordpress-extended
```

## Compatibilidade

- n8n >= 1.0.0
- WordPress >= 5.6 (com Application Passwords)
- Node.js >= 18
- ACF >= 5.11 (para suporte REST API nativo)

## Licença

MIT

## Autor

**Gustavo José Silva Melo** — [UniversoNext](https://universonext.com.br)