179 lines
5.0 KiB
Markdown
179 lines
5.0 KiB
Markdown
---
|
|
name: wp-dev
|
|
description: Desenvolvimento WordPress especializado com Quality Gate 70+. Cria e modifica plugins seguindo WordPress Coding Standards, desenvolve temas child, integra WooCommerce e resolve problemas WordPress.
|
|
layer: wiki
|
|
---
|
|
|
|
# WordPress Plugin Developer
|
|
|
|
Skill para desenvolvimento WordPress profissional seguindo padrões Descomplicar®.
|
|
|
|
## Quando Usar
|
|
|
|
- Criar ou modificar plugins WordPress
|
|
- Desenvolver temas ou child themes
|
|
- Integrar funcionalidades WooCommerce
|
|
- Resolver problemas específicos WordPress
|
|
- Criar custom post types, taxonomias, widgets
|
|
|
|
## Quando NÃO Usar
|
|
|
|
- Para operações CRM (usar /crm-ops)
|
|
- Para operações servidor/SSH genéricas (usar agente especializado)
|
|
- Para manutenção rotineira WP (usar /today às segundas)
|
|
|
|
## Contexto NotebookLM
|
|
|
|
ANTES de executar, consultar notebooks para contexto especializado:
|
|
|
|
| Notebook | ID | Consultar quando |
|
|
|----------|-----|-----------------|
|
|
| WordPress e Elementor | 5be0d1a6 | Sempre |
|
|
| WordPress Config CLI | fb2f26bd-8cb0-4d4c-bafc-4f1ebb51c51d | Para WP-CLI e configuração |
|
|
|
|
```
|
|
mcp__notebooklm__notebook_query({
|
|
notebook_id: "5be0d1a6-00f2-4cd9-b835-978cb7721601",
|
|
query: "<adaptar ao contexto do pedido do utilizador>"
|
|
})
|
|
|
|
mcp__notebooklm__notebook_query({
|
|
notebook_id: "fb2f26bd-8cb0-4d4c-bafc-4f1ebb51c51d",
|
|
query: "<adaptar ao contexto de WP-CLI e configuração WordPress>"
|
|
})
|
|
```
|
|
|
|
Integrar insights do NotebookLM nas recomendações e decisões.
|
|
|
|
### Procedimentos Relacionados
|
|
- `PROC-WiP-Definicao.md` — Definição de projectos WordPress in a Package
|
|
- `PROC-WiP-Instalacao.md` — Instalação e configuração WiP
|
|
- `PROC-WiP-Gestao.md` — Gestão e manutenção WiP
|
|
|
|
---
|
|
|
|
## Protocolo Obrigatório
|
|
|
|
### 1. Pesquisa Inicial (MCP)
|
|
Antes de desenvolver, SEMPRE executar:
|
|
```
|
|
mcp__mem_search_memories "[keywords wordpress]"
|
|
mcp__wikijs__search_pages "[plugin/funcionalidade]"
|
|
```
|
|
|
|
### 2. Quality Gate 70+
|
|
Todo código WordPress deve atingir score mínimo 70/100:
|
|
- WordPress Coding Standards (WPCS)
|
|
- Funções documentadas com PHPDoc
|
|
- Hooks e filters bem estruturados
|
|
- Sem warnings/notices PHP
|
|
- Segurança: nonces, sanitização, escaping
|
|
|
|
### 3. Assinatura Obrigatória
|
|
Todo ficheiro PHP deve incluir:
|
|
```php
|
|
<?php
|
|
/**
|
|
* [Nome do Plugin/Ficheiro]
|
|
*
|
|
* @author Descomplicar® Crescimento Digital
|
|
* @link https://descomplicar.pt
|
|
* @copyright 2025 Descomplicar®
|
|
*/
|
|
```
|
|
|
|
## Segurança WordPress (OBRIGATÓRIO)
|
|
|
|
- **Sanitizar inputs**: `sanitize_text_field()`, `sanitize_email()`, `absint()`
|
|
- **Escapar outputs**: `esc_html()`, `esc_attr()`, `esc_url()`
|
|
- **Nonces para forms**: `wp_nonce_field()`, `wp_verify_nonce()`
|
|
- **AJAX nonces**: `check_ajax_referer()`
|
|
- **Capability checks**: `current_user_can()` antes de acções admin
|
|
- **Prepared statements**: `$wpdb->prepare()` para queries
|
|
|
|
## Performance
|
|
|
|
- Enqueueing correcto: `wp_enqueue_script()`, `wp_enqueue_style()`
|
|
- Hooks no momento certo: `init`, `admin_init`, `wp_enqueue_scripts`
|
|
- Evitar queries em loops
|
|
- Usar transients para cache: `get_transient()`, `set_transient()`
|
|
|
|
## Estrutura Plugin Standard
|
|
|
|
```
|
|
plugin-name/
|
|
├── plugin-name.php # Ficheiro principal
|
|
├── includes/
|
|
│ ├── class-plugin-name.php
|
|
│ └── class-plugin-name-admin.php
|
|
├── assets/
|
|
│ ├── css/
|
|
│ └── js/
|
|
├── templates/
|
|
├── languages/
|
|
└── readme.txt
|
|
```
|
|
|
|
## Template Plugin Principal
|
|
|
|
```php
|
|
<?php
|
|
/**
|
|
* Plugin Name
|
|
*
|
|
* @package PluginName
|
|
* @author Descomplicar® Crescimento Digital
|
|
* @copyright 2025 Descomplicar®
|
|
* @license GPL-2.0-or-later
|
|
*
|
|
* @wordpress-plugin
|
|
* Plugin Name: Plugin Name
|
|
* Plugin URI: https://descomplicar.pt/plugin-name
|
|
* Description: Descrição do plugin.
|
|
* Version: 1.0.0
|
|
* Requires at least: 6.0
|
|
* Requires PHP: 8.0
|
|
* Author: Descomplicar®
|
|
* Author URI: https://descomplicar.pt
|
|
* Text Domain: plugin-name
|
|
* License: GPL v2 or later
|
|
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
|
*/
|
|
|
|
defined('ABSPATH') || exit;
|
|
|
|
define('PLUGIN_NAME_VERSION', '1.0.0');
|
|
define('PLUGIN_NAME_PATH', plugin_dir_path(__FILE__));
|
|
define('PLUGIN_NAME_URL', plugin_dir_url(__FILE__));
|
|
|
|
// Autoloader ou includes
|
|
require_once PLUGIN_NAME_PATH . 'includes/class-plugin-name.php';
|
|
|
|
// Inicialização
|
|
function plugin_name_init() {
|
|
load_plugin_textdomain('plugin-name', false, dirname(plugin_basename(__FILE__)) . '/languages/');
|
|
}
|
|
add_action('plugins_loaded', 'plugin_name_init');
|
|
|
|
// Activação
|
|
register_activation_hook(__FILE__, 'plugin_name_activate');
|
|
function plugin_name_activate() {
|
|
// Criar tabelas, opções, etc.
|
|
}
|
|
|
|
// Desactivação
|
|
register_deactivation_hook(__FILE__, 'plugin_name_deactivate');
|
|
function plugin_name_deactivate() {
|
|
// Limpeza
|
|
}
|
|
```
|
|
|
|
## Checklist Antes de Entregar
|
|
|
|
- [ ] Assinatura Descomplicar® em todos os ficheiros
|
|
- [ ] Segurança: nonces, sanitização, escaping
|
|
- [ ] WordPress Coding Standards
|
|
- [ ] Sem erros PHP (php -l)
|
|
- [ ] Textdomain para traduções
|
|
- [ ] Uninstall hook para limpeza
|