feat(wordpress): adiciona plugin wordpress (agents, skills, knowledge e metadados do projeto)
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
---
|
||||
name: branda-menu
|
||||
description: Organizacao do menu admin WordPress via Branda (branda-white-labeling) em seccoes Descomplicar standard. Computa Branda IDs a partir de slugs WP, constroi menu custom e guarda programaticamente via WP-CLI.
|
||||
layer: wiki
|
||||
---
|
||||
|
||||
# /branda-menu - Organizar Menu Admin WordPress
|
||||
|
||||
Skill para organizar o menu admin sidebar de qualquer site WordPress WiP usando o Branda (branda-white-labeling).
|
||||
|
||||
---
|
||||
|
||||
## Arquitectura Branda (Referencia Interna)
|
||||
|
||||
### Como o Branda gere menus
|
||||
|
||||
O Branda usa um modulo `admin/menu.php` que intercepta o render do menu admin WordPress e substitui pela configuracao custom.
|
||||
|
||||
**Options `wp_options` envolvidas:**
|
||||
|
||||
| Option | Funcao |
|
||||
|--------|--------|
|
||||
| `ultimatebranding_activated_modules` | Modulos activos (precisa ter `admin/menu.php`) |
|
||||
| `ub_custom_admin_menu` | Configuracao do menu custom por role |
|
||||
| `ub_saved_admin_menus` | Captura do menu nativo WP (so para UI Branda) |
|
||||
|
||||
### Algoritmo de ID (critico)
|
||||
|
||||
```php
|
||||
function branda_id($slug) {
|
||||
return "menu_item_" . substr(base_convert(md5($slug), 16, 32), 0, 12);
|
||||
}
|
||||
```
|
||||
|
||||
**Exemplo:** `index.php` -> `menu_item_42ho017e7jo0`
|
||||
|
||||
### Tipos de itens no menu
|
||||
|
||||
| Tipo | Campos chave | Uso |
|
||||
|------|-------------|-----|
|
||||
| **Section header** | `link_type: "none"`, `css_classes: "menu-highlight"` | Separador visual com titulo |
|
||||
| **Custom link** | `link_type: "custom"`, `custom_url: "..."` | Link manual |
|
||||
| **Native item** | `was_native: 1`, campos vazios | Item WP real |
|
||||
| **Hidden item** | `is_hidden: "1"`, `was_native: 1` | Item WP escondido |
|
||||
|
||||
### Mecanismo de merge (parse_args_deep)
|
||||
|
||||
Na renderizacao, o Branda faz merge do menu configurado com o menu WP real. **Regra critica:** Incluir **todos** os itens nativos no config (visiveis ou hidden). Se faltar algum, aparece na posicao default e quebra a organizacao.
|
||||
|
||||
---
|
||||
|
||||
## Seccoes Standard Descomplicar (9)
|
||||
|
||||
| # | Seccao | Dashicon | Conteudo tipico |
|
||||
|---|--------|----------|----------------|
|
||||
| 1 | **Suporte** | dashicons-admin-tools | Link Descomplicar |
|
||||
| 2 | **Admin** | dashicons-admin-generic | Painel, Utilizadores, Opcoes, Plugins, Ferramentas |
|
||||
| 3 | **Conteudo** | dashicons-admin-page | Paginas, CPTs, Artigos, Multimedia, ACF |
|
||||
| 4 | **Design** | dashicons-admin-appearance | Elementor, Modelos, Jeg Kit, Apresentacao |
|
||||
| 5 | **Marketing** | dashicons-megaphone | FluentCRM, Fluent Forms, Rank Math, WhatsApp |
|
||||
| 6 | **Idiomas** | dashicons-translation | Polylang/WPML, Loco Translate (se multilingue) |
|
||||
| 7 | **Performance** | dashicons-performance | WP Fastest Cache, WebP Express |
|
||||
| 8 | **Seguranca** | dashicons-shield | Wordfence, Complianz |
|
||||
| 9 | **WebMaster** | dashicons-admin-settings | Branda, Code Snippets, Activity Log |
|
||||
|
||||
---
|
||||
|
||||
## Procedimento
|
||||
|
||||
### Passo 1: Verificar pre-requisitos
|
||||
|
||||
```bash
|
||||
mcp__ssh-unified__ssh_execute server:"server" command:"wp plugin is-active branda-white-labeling --allow-root --path=/home/USER/SITE && echo ACTIVE || echo INACTIVE"
|
||||
|
||||
# Verificar modulo menu activo
|
||||
mcp__ssh-unified__ssh_execute server:"server" command:"wp eval '
|
||||
\$m = get_option(\"ultimatebranding_activated_modules\", array());
|
||||
echo isset(\$m[\"admin/menu.php\"]) ? \"MENU MODULE ACTIVE\" : \"MENU MODULE INACTIVE\";
|
||||
' --allow-root --path=/home/USER/SITE"
|
||||
```
|
||||
|
||||
Se modulo inactivo, activar:
|
||||
```bash
|
||||
mcp__ssh-unified__ssh_execute server:"server" command:"wp eval '
|
||||
\$m = get_option(\"ultimatebranding_activated_modules\", array());
|
||||
\$m[\"admin/menu.php\"] = \"yes\";
|
||||
update_option(\"ultimatebranding_activated_modules\", \$m);
|
||||
echo \"Activado\";
|
||||
' --allow-root --path=/home/USER/SITE"
|
||||
```
|
||||
|
||||
### Passo 2: Extrair menu nativo
|
||||
|
||||
**Opcao A (preferida): mu-plugin temporario** - criar mu-plugin que captura menu no proximo page load, depois ler a captura via `wp eval`.
|
||||
|
||||
**Opcao B (alternativa): Chrome DevTools** - navegar ao wp-admin e executar JS para listar itens.
|
||||
|
||||
### Passo 3: Mapear itens para seccoes
|
||||
|
||||
Com a lista de itens nativos, mapear cada um para a seccao correcta.
|
||||
|
||||
Mapeamento completo de slugs e IDs em: `references/mapeamento-slugs.md`
|
||||
|
||||
### Passo 4: Construir e guardar o menu
|
||||
|
||||
Script PHP template completo em: `references/script-template.md`
|
||||
|
||||
Executar com `wp eval-file` via SSH MCP.
|
||||
|
||||
### Passo 5: Verificar
|
||||
|
||||
```bash
|
||||
mcp__ssh-unified__ssh_execute server:"server" command:"wp eval '
|
||||
\$m = get_option(\"ub_custom_admin_menu\");
|
||||
\$items = \$m[\"administrator\"];
|
||||
echo \"Total: \" . count(\$items) . \"\n\";
|
||||
foreach (\$items as \$key => \$item) {
|
||||
\$hidden = !empty(\$item[\"is_hidden\"]) ? \" [HIDDEN]\" : \"\";
|
||||
\$type = !empty(\$item[\"was_native\"]) ? \"native\" : (!empty(\$item[\"link_type\"]) && \$item[\"link_type\"] == \"none\" ? \"header\" : \"custom\");
|
||||
\$title = !empty(\$item[\"title\"]) ? \$item[\"title\"] : \"(native)\";
|
||||
echo \"\$key => \$type: \$title\$hidden\n\";
|
||||
}
|
||||
' --allow-root --path=/home/USER/SITE"
|
||||
```
|
||||
|
||||
Verificar visualmente no browser.
|
||||
|
||||
### Passo 6: Limpar
|
||||
|
||||
```bash
|
||||
mcp__ssh-unified__ssh_execute server:"server" command:"rm -f /tmp/branda-menu-SITE.php"
|
||||
|
||||
mcp__ssh-unified__ssh_e
|
||||
Reference in New Issue
Block a user