- All SKILL.md files now <500 lines (avg reduction 69%) - Detailed content extracted to references/ subdirectories - Frontmatter standardised: only name + description (Anthropic standard) - New skills: brand-guidelines, spec-coauthor, report-templates, skill-creator - Design skills: anti-slop guidelines, premium-proposals reference - Removed non-standard frontmatter fields (triggers, version, author, category) Plugins affected: infraestrutura, marketing, dev-tools, crm-ops, gestao, core-tools, negocio, perfex-dev, wordpress, design-media Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
6.5 KiB
name, description
| name | description |
|---|---|
| branda-menu | 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. |
/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)
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
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:
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
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
mcp__ssh-unified__ssh_execute server:"server" command:"rm -f /tmp/branda-menu-SITE.php"
mcp__ssh-unified__ssh_execute server:"server" command:"wp eval '
delete_option(\"_branda_menu_capture\");
delete_option(\"_branda_menu_captured\");
echo \"Limpo\";
' --allow-root --path=/home/USER/SITE"
mcp__ssh-unified__ssh_execute server:"server" command:"rm -f /home/USER/SITE/wp-content/mu-plugins/capture-menu.php 2>/dev/null; echo ok"
Troubleshooting
| Problema | Causa | Solucao |
|---|---|---|
| Menu nao muda apos guardar | Cache ou modulo inactivo | wp cache flush + verificar admin/menu.php activo |
| Itens nativos fora das seccoes | Item nao incluido no config | Identificar slug, computar Branda ID, adicionar ao config |
| Separadores nativos aparecem | Slugs diferentes dos standard | Verificar slugs via captura, adicionar como hidden |
| Items custom em duplicado | Existe como custom e native | Remover custom link, manter native |
CSS fallback para separadores:
#adminmenu li.wp-menu-separator { display: none !important; }
Checklist
- Branda activo e modulo
admin/menu.phpactivo - Menu nativo extraido (todos os itens identificados)
- Todos os itens nativos incluidos no config (visiveis ou hidden)
- 9 seccoes criadas na ordem standard
- CPTs do projecto na seccao Conteudo
- Verificado visualmente no browser
- Script temporario e capturas removidos
- Permissoes corrigidas:
chown -R USER:USER /home/USER/SITE/
References
references/mapeamento-slugs.md- Mapeamento completo slug -> seccao e tabela de Branda IDsreferences/script-template.md- Script PHP template + adaptacoes por tipo de site