WP Manifestindependent plugin directory
manifest / developer / wordpress-plugin-boilerplate

Portfólio

Gerencie seus projetos e trabalhos de portfólio com custom post type

by Charles Batista · github.com/charlesbatista/wordpress-plugin-boilerplate · website

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/charlesbatista/wordpress-plugin-boilerplate/archive/refs/heads/master.zip

Plugin Boilerplate - WordPress

Boilerplate moderno para criação de plugins WordPress seguindo as melhores práticas atuais de PHP e WordPress.

🚀 Características

  • PHP 8.0+: Utiliza recursos modernos do PHP (namespaces, type hints, etc.)
  • Arquitetura OOP: Código orientado a objetos organizado
  • PSR-4 Autoloading: Autoload automático de classes
  • Separação de Concerns: Admin, Frontend e Core separados
  • Gestão de Capabilities: Sistema robusto de permissões
  • Internacionalização: Pronto para tradução
  • WordPress Coding Standards: Segue os padrões do WordPress
  • Segurança: Nonces, sanitização e validação incluídos
  • Gutenberg Ready: Suporte ao editor de blocos

📁 Estrutura de Diretórios

plugin-boilerplate/
├── admin/
│   ├── assets/
│   │   ├── css/
│   │   │   └── admin.css
│   │   └── js/
│   │       └── admin.js
│   └── views/
│       ├── dashboard.php
│       └── settings.php
├── includes/
│   ├── Admin/
│   │   └── Admin.php
│   ├── Capabilities/
│   │   └── CapabilityManager.php
│   ├── Frontend/
│   │   └── Frontend.php
│   ├── PostTypes/
│   │   └── PostTypeManager.php
│   ├── Activator.php
│   ├── Deactivator.php
│   ├── I18n.php
│   ├── Loader.php
│   └── Plugin.php
├── public/
│   └── assets/
│       ├── css/
│       │   └── public.css
│       └── js/
│           └── public.js
├── languages/
├── plugin-boilerplate.php
├── uninstall.php
└── README.md

🔧 Como Usar

1. Renomear o Plugin

Faça uma busca e substituição (case-sensitive) dos seguintes termos:

  • Plugin Boilerplate → Nome do seu plugin
  • plugin-boilerplate → slug do seu plugin (kebab-case)
  • plugin_boilerplate → prefixo do seu plugin (snake_case)
  • PluginBoilerplate → namespace do seu plugin (PascalCase)
  • PLUGIN_BOILERPLATE → constantes do seu plugin (UPPER_CASE)

2. Atualizar Cabeçalho

Edite o cabeçalho em plugin-boilerplate.php:

/**
 * Plugin Name: Seu Plugin
 * Plugin URI: https://seusite.com
 * Description: Descrição do seu plugin
 * Version: 1.0.0
 * Author: Seu Nome
 * Author URI: https://seusite.com
 * Text Domain: seu-plugin
 */

3. Configurar Custom Post Type

Edite includes/PostTypes/PostTypeManager.php para configurar seu custom post type:

  • Altere labels
  • Defina o slug
  • Configure capabilities
  • Ajuste supports

4. Configurar Capabilities

Edite includes/Capabilities/CapabilityManager.php:

  • Defina suas capabilities customizadas
  • Configure permissões por role
  • Adicione roles personalizados se necessário

5. Desenvolver Funcionalidades

Área Admin

Adicione funcionalidades em includes/Admin/Admin.php:

public function my_custom_function() {
    // Seu código aqui
}

Registre hooks em includes/Plugin.php:

$this->loader->add_action('admin_init', $admin, 'my_custom_function');

Área Pública

Adicione funcionalidades em includes/Frontend/Frontend.php:

public function my_custom_function() {
    // Seu código aqui
}

Registre hooks em includes/Plugin.php:

$this->loader->add_action('wp_footer', $public, 'my_custom_function');

🔐 Sistema de Capabilities

O boilerplate inclui um sistema robusto de gestão de capabilities:

Capabilities Padrão

  • edit_{plugin} - Editar item individual
  • read_{plugin} - Ler item individual
  • delete_{plugin} - Deletar item individual
  • edit_{plugin}s - Editar itens
  • edit_others_{plugin}s - Editar itens de outros usuários
  • publish_{plugin}s - Publicar itens
  • read_private_{plugin}s - Ler itens privados
  • delete_{plugin}s - Deletar itens
  • manage_{plugin}_settings - Gerenciar configurações
  • view_{plugin}_reports - Ver relatórios
  • export_{plugin}_data - Exportar dados
  • import_{plugin}_data - Importar dados

Distribuição por Role

  • Administrator: Todas as capabilities
  • Editor: Gerenciamento completo exceto configurações
  • Author: Gerenciar próprios posts
  • Contributor: Editar e ler próprios posts

Criar Role Customizado

$capability_manager = new CapabilityManager();
$capability_manager->create_custom_role(
    'custom_role',
    'Role Customizado',
    [
        'read' => true,
        'edit_plugin_boilerplate' => true,
    ]
);

🎨 Assets

CSS

  • Admin: admin/assets/css/admin.css
  • Public: public/assets/css/public.css

JavaScript

  • Admin: admin/assets/js/admin.js
  • Public: public/assets/js/public.js

Variáveis JavaScript

As variáveis são localizadas automaticamente:

Admin:

pluginBoilerplateAdmin.ajaxUrl
pluginBoilerplateAdmin.nonce
pluginBoilerplateAdmin.strings

Public:

pluginBoilerplatePublic.ajaxUrl
pluginBoilerplatePublic.nonce

🌐 Internacionalização

Criar Arquivo de Tradução

  1. Instale o plugin Loco Translate ou use Poedit
  2. Crie tradução para plugin-boilerplate
  3. Salve em languages/

Usar Strings Traduzíveis

__('Texto', PLUGIN_BOILERPLATE_TEXT_DOMAIN);
_e('Texto', PLUGIN_BOILERPLATE_TEXT_DOMAIN);
esc_html__('Texto', PLUGIN_BOILERPLATE_TEXT_DOMAIN);
esc_html_e('Texto', PLUGIN_BOILERPLATE_TEXT_DOMAIN);

🔒 Segurança

Nonces

Sempre use nonces para requisições:

// Criar nonce
wp_create_nonce('plugin_boilerplate_action');

// Verificar nonce
wp_verify_nonce($_POST['nonce'], 'plugin_boilerplate_action');

Sanitização

sanitize_text_field($_POST['field']);
sanitize_email($_POST['email']);
sanitize_url($_POST['url']);
wp_kses_post($_POST['content']);

Validação

if (!current_user_can('manage_plugin_boilerplate_settings')) {
    wp_die(__('Acesso negado', PLUGIN_BOILERPLATE_TEXT_DOMAIN));
}

📊 Boas Práticas

  1. Sempre use namespaces: Evite conflitos de nomes
  2. Type hints: Use type declarations em métodos
  3. Documentação: Comente suas classes e métodos
  4. Sanitização: Sempre sanitize inputs
  5. Escapamento: Sempre escape outputs
  6. Capabilities: Use capabilities ao invés de roles
  7. Hooks: Use o Loader para organizar hooks
  8. Singleton: Use para classes únicas (Plugin.php)
  9. Constantes: Defina constantes para paths e versões
  10. Desinstalação: Implemente limpeza em uninstall.php

🔄 Atualizações

Ao atualizar a versão:

  1. Altere PLUGIN_BOILERPLATE_VERSION no arquivo principal
  2. Atualize o header Version:
  3. Execute migrações se necessário
  4. Teste em ambiente de staging

📝 Licença

GPL v2 or later

👨‍💻 Autor

Charles Batista
🌐 charlesbatista.com.br

🤝 Contribuindo

  1. Fork o projeto
  2. Crie uma branch para sua feature
  3. Commit suas mudanças
  4. Push para a branch
  5. Abra um Pull Request

📚 Recursos