Files
claude-plugins/wordpress/skills/branda-menu/SKILL.md
T

4.9 KiB

name, description, layer
name description layer
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. 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)

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_e