SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
Ferramentas Essenciais para
Desenvolvedores de Plugins
WordPress
Tiago Hillebrandt
@tiagoscd
Tiago Hillebrandt
● Head of DevOps na Rainmaker Digital Services
● Trabalha diariamente em uma estrutura com milhares de instalações WordPress
● Colaborador de diversos projetos de software livre, tais como WordPress, WP-CLI, Ubuntu,
dentre outros
https://twitter.com/tiagoscd
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
● Se cada vez que você vê um repositório com essa estrutura de arquivos
você se pergunta WTF?, essa palestra é pra você.
● Cada uma das ferramentas mencionadas nesta apresentação já estão
consolidadas no mercado, e são amplamente utilizadas por diversas
empresas de desenvolvimento de plugins.
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
Ferramentas Essenciais
● Vagrant
● Composer
● PHP Code Sniffer
● Npm
● Grunt
● EditorConfig
● readme.txt
● Readme Validator
● WP Readme
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
Plugin de exemplo que usaremos na apresentação:
https://github.com/tiagohillebrandt/wordcamp-example-plugin/
Vagrant
● Permite criar ambientes de desenvolvimento em máquinas virtuais
● Possibilita a criação de ambientes locais mais próximos ao de produção
● Diversas imagens (boxes) estão disponíveis gratuitamente na Vagrant Cloud:
○ ubuntu/xenial64: Ubuntu 16.04 Xenial Xerus
○ debian/jessie64: Debian 8 Jessie
○ centos/7: CentOS 7
● Box para desenvolvedores WordPress: https://varyingvagrantvagrants.org/
○ https://varyingvagrantvagrants.org/docs/en-US/installed-packages/
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
Vagrant
Instalação
● Acessar a página do Vagrant e baixar a versão de acordo
com o seu sistema operacional:
○ https://www.vagrantup.com/downloads.html
● Requer um software de virtualização:
○ VirtualBox
○ VMware
○ Docker
○ Hyper-V
○ Outros
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
Vagrant
Como funciona?
Criando um novo ambiente Vagrant:
$ mkdir my-wp-plugin
$ cd my-wp-plugin
$ vagrant init ubuntu/xenial64
Ligando a máquina virtual:
$ vagrant up
Acessando a máquina virtual:
$ vagrant ssh
Desligando a máquina virtual:
$ vagrant halt
Ao desligar, todos os dados são preservados.
Destruindo a máquina virtual:
$ vagrant destroy
Ao destruir, todos os dados serão apagados.
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
Composer
● Ferramenta para gerenciamento de dependências em PHP
● Permite a declaração e gerenciamento de bibliotecas que seu o projeto depende para funcionar
○ https://packagist.org/
● Conceito similar ao de outros gerenciadores de dependências:
○ npm (Node.js)
○ bundler (Ruby)
○ pip (Python)
○ apt-get (Debian/Ubuntu)
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
Composer
Instalação
● Bash (Linux, Unix, Mac):
○ curl -sS https://getcomposer.org/installer | php
○ sudo mv composer.phar /usr/local/bin/composer
● Pacote PHAR:
○ https://getcomposer.org/composer.phar
● Windows:
○ https://getcomposer.org/Composer-Setup.exe
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
Composer
Como funciona?
● Caso queira instalar a biblioteca bootstrap no seu projeto:
$ composer require twbs/bootstrap
● Ao rodar esse comando em um novo projeto:
○ O arquivo composer.json será criado incluindo o nome da biblioteca que você está instalando.
○ O arquivo composer.lock será criado com detalhes da versão sendo instalada atualmente no projeto.
○ O diretório vendor/ será criado e o bootstrap será instalado dentro dele.
● Commitar os arquivos composer.json e composer.lock junto com seu projeto.
● O diretório vendor/ nunca deve ser commitado (adicionar ao .gitignore).
https://github.com/tiagohillebrandt/wordcamp-example-plugin/blob/master/composer.json
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
Composer
Como funciona?
● Se você baixar qualquer projeto cujo arquivo composer.json já exista, basta acessar o diretório
onde o arquivo se encontra e rodar:
$ composer install
● O Composer irá ler os arquivos .json e .lock e instalar as dependências listadas neles dentro do
diretório vendor/.
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
PHP Code Sniffer
● Permite a definição e validação de padrões de desenvolvimento (coding standards) para seu projeto
● Importante para manter a consistência do código
● Coding standards do WordPress:
○ https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/
● Extensões:
○ Para verificar se seu código é compatível com os coding standards do WordPress:
■ https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards
○ Para verificar se seu código é compatível com uma determinada versão do PHP:
■ https://github.com/wimg/PHPCompatibility
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
PHP Code Sniffer
Instalação
● Instalando o PHPCS:
$ composer require squizlabs/php_codesniffer --dev
● Instalando a extensão WPCS:
$ composer require wp-coding-standards/wpcs --dev
● Instalando a extensão PHPCompatibility:
$ composer require wimg/php-compatibility --dev
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
PHP Code Sniffer
Instalação
● Habilitando as extensões no PHPCS:
$ ./vendor/bin/phpcs --config-set installed_paths
vendor/wp-coding-standards/wpcs/,vendor/wimg/php-compatibility/
● Outra opção carregar as extensões dentro do próprio composer.json:
"scripts": {
"post-update-cmd": [
"./vendor/bin/phpcs --config-set installed_paths
vendor/wp-coding-standards/wpcs/,vendor/wimg/php-compatibility/"
]
}
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
PHP Code Sniffer
Como funciona?
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
● Os padrões de desenvolvimento são definidos dentro do arquivo phpcs.xml.dist ou ruleset.xml
○ https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml
● PHPCS oferece suporte nativo aos padrões PSR2, Zend, Squiz, PEAR e PSR1
● Se uma determinada regra (sniff code) do padrão não for necessária no seu projeto, você pode
desabilitá-la através da tag exclude
● Exemplo de configuração:
○ https://github.com/tiagohillebrandt/wordcamp-example-plugin/blob/master/phpcs.xml.dist
PHP Code Sniffer
Quem usa?
● WP-CLI
○ https://github.com/wp-cli/wp-cli/blob/master/phpcs.xml.dist
● WooCommerce
○ https://github.com/woocommerce/woocommerce/blob/master/phpcs.ruleset.xml
● Yoast SEO
○ https://github.com/Yoast/wordpress-seo/blob/trunk/phpcs.xml
● WP Healthcheck
○ https://github.com/wp-healthcheck/wp-healthcheck/blob/develop/phpcs.xml.dist
● Genesis Framework
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
npm
● Gerenciador de pacotes para Node.js
● Usado para gerenciar as dependências em JavaScript
● Ou seja, assim como o Composer, o npm permite a declaração e gerenciamento de bibliotecas que
o seu projeto necessita
○ https://www.npmjs.com/
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
npm
Instalação
● Ao instalar o Node.js em sua máquina, o npm já será instalado com ele
● Debian/Ubuntu:
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt-get install -y nodejs
● Outras plataformas:
○ https://nodejs.org/en/download/
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
npm
Como funciona?
● O primeiro passo é acessar o seu projeto e rodar o seguinte comando:
$ npm init
● Ao rodar o comando acima, algumas informações serão solicitadas, e no fim o arquivo package.json
será criado no seu projeto.
● Agora estamos prontos pra usar o npm no nosso projeto.
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
npm
Como funciona?
● Caso queira instalar o Gulp no seu projeto:
$ npm install gulp --save-dev
● Ao rodar esse comando em um novo projeto:
○ O arquivo package.json será atualizado incluindo o nome da biblioteca que você está instalando.
○ O arquivo package-lock.json será criado com detalhes da versão sendo instalada atualmente no projeto.
○ O diretório node_modules/ será criado e o Gulp será instalado dentro dele.
● Commitar os arquivos package.json e package-lock.json junto com seu projeto.
● O diretório node_modules/ nunca deve ser commitado (adicionar ao .gitignore).
https://github.com/tiagohillebrandt/wordcamp-example-plugin/blob/master/package.json
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
Grunt
● Execução de tarefas em JavaScript pela linha de comando
● As tarefas são configuradas dentro de um arquivo JS, geralmente chamado Gruntfile.js
● Ao instalar certos plugins, você pode automatizar várias tarefas do seu projeto com o Grunt:
○ Gerar o catálogo de traduções do seu plugin (arquivo POT)
○ Verificar se as funções de localização (i18n) do WordPress foram usadas corretamente
○ Compilar Sass para CSS
○ Minificar os arquivos JavaScript e CSS
○ Averiguar a qualidade do seu código JavaScript (linting)
○ Criar um arquivo zip do seu plugin (build)
○ Dentre outras
● Página oficial com os plugins disponíveis:
○ https://gruntjs.com/plugins
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
Grunt
Instalação
● Primeiro precisamos criar um arquivo package.json para seu projeto:
$ npm init
● Ao rodar o comando acima, no campo entry point informe o nome Gruntfile.js
● Feito isso, para instalar o Grunt:
$ npm install grunt --save-dev
● Para executar o Grunt:
$ node_modules/grunt/bin/grunt
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
Grunt
Gruntfile.js
● Configuração das tarefas que serão executadas no seu projeto
● É possível criar custom tasks, que compreendem um conjunto de tarefas a serem executadas
● Se o nome da tarefa não for passado como parâmetro ao chamar o Grunt, a tarefa default será
executada automaticamente
● Exemplo de configuração:
○ https://github.com/tiagohillebrandt/wordcamp-example-plugin/blob/master/Gruntfile.js
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
Grunt
Quem usa?
● jQuery
○ https://github.com/jquery/jquery/blob/master/Gruntfile.js
● WordPress
○ https://develop.svn.wordpress.org/trunk/Gruntfile.js
● WooCommerce
○ https://github.com/woocommerce/woocommerce/blob/master/Gruntfile.js
● Yoast SEO
○ https://github.com/Yoast/wordpress-seo/blob/trunk/Gruntfile.js
● Bootstrap
○ https://github.com/twbs/bootstrap/blob/master/Gruntfile.js
● WP Healthcheck
○ https://github.com/wp-healthcheck/wp-healthcheck/blob/develop/Gruntfile.js
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
EditorConfig
● Usado para definir e manter um estilo de codificação consistente entre diferentes editores e IDEs
● Você declara as propriedades (indentação, codificação, etc) no arquivo .editorconfig
○ https://github.com/editorconfig/editorconfig/wiki/EditorConfig-Properties
● Ao abrir o editor ou IDE, ele lê o arquivo e adere ao estilo de codificação definido no .editorconfig
● É necessário baixar o plugin para seu editor ou IDE:
○ http://editorconfig.org/#download
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
EditorConfig
Quem usa?
● PHP
○ http://git.php.net/?p=php-src.git;a=blob_plain;f=.editorconfig;hb=HEAD
● WordPress
○ https://develop.svn.wordpress.org/trunk/.editorconfig
● WooCommerce
○ https://github.com/woocommerce/woocommerce/blob/master/.editorconfig
● jQuery
○ https://github.com/jquery/jquery/blob/master/.editorconfig
● WP-CLI
○ https://github.com/wp-cli/wp-cli/blob/master/.editorconfig
● Yoast SEO
○ https://github.com/Yoast/wordpress-seo/blob/trunk/.editorconfig
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
● Arquivo com informações sobre o plugin
● Pode conter a descrição, passos para instalação, perguntas frequentes, listagem de screenshots,
changelog, notas de upgrade, dentre outras coisas
● É usado para gerar a página do plugin no WordPress Plugin Directory:
○ https://developer.wordpress.org/plugins/wordpress-org/how-your-readme-txt-works/
● Oferece suporte a Markdown:
○ https://daringfireball.net/projects/markdown/syntax
● Diferente do README.md
● Requerido no processo de submissão de plugins para o WordPress Plugin Directory
readme.txt
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
Readme Validator
● Permite validar o conteúdo do seu readme.txt
○ https://wordpress.org/plugins/developers/readme-validator/
● No entanto, ele não permite que você pré-visualize o conteúdo do seu arquivo
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
WP Readme
● Assim como o Readme Validator, valida o
conteúdo do seu readme.txt
● Além de validar, você também consegue
pré-visualizar seu readme.txt
https://wpreadme.com/
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
Plugin: WP Healthcheck
● Plugin para verificar o estado da sua instalação WordPress
● Verifica o número e tamanho de Transients e Autoload Options
● Limpeza de Transients e desativação de Autoload Options
● Verifica a versão dos softwares instalados no servidor:
○ PHP
○ MySQL/MariaDB
○ WordPress
○ Servidor web
● Em breve: notificações quando o seu certificado SSL estiver próximo da data de expiração
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
Plugin: WP Healthcheck
Disponível gratuitamente para download.
● WordPress Plugin Directory:
○ https://wordpress.org/plugins/wp-healthcheck/
● WP-CLI:
○ wp plugin install wp-healthcheck
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Tiago Hillebrandt ( @tiagoscd )
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress

Contenu connexe

Tendances

Integração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsIntegração contínua em PHP com Jenkins
Integração contínua em PHP com Jenkins
Gilmar Pupo
 
Minicurso Git Semcomp Beta
Minicurso Git   Semcomp BetaMinicurso Git   Semcomp Beta
Minicurso Git Semcomp Beta
Bruno Orlandi
 

Tendances (20)

Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
 
Secomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao ElixirSecomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao Elixir
 
Gerenciando o Zabbix com o SaltStack
Gerenciando o Zabbix com o SaltStackGerenciando o Zabbix com o SaltStack
Gerenciando o Zabbix com o SaltStack
 
Use o git e perca o medo de errar
Use o git e perca o medo de errarUse o git e perca o medo de errar
Use o git e perca o medo de errar
 
Git Overview: Grupo RBS
Git Overview: Grupo RBSGit Overview: Grupo RBS
Git Overview: Grupo RBS
 
Dia Debian 2007 - Desenvolvendo aplicações no Linux
Dia Debian 2007 - Desenvolvendo aplicações no LinuxDia Debian 2007 - Desenvolvendo aplicações no Linux
Dia Debian 2007 - Desenvolvendo aplicações no Linux
 
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
 
Integração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsIntegração contínua em PHP com Jenkins
Integração contínua em PHP com Jenkins
 
Jenkins + DCS / Dafiti Conference 2014
Jenkins + DCS / Dafiti Conference 2014Jenkins + DCS / Dafiti Conference 2014
Jenkins + DCS / Dafiti Conference 2014
 
Jenkins, o CI ao seu dispor
Jenkins, o CI ao seu disporJenkins, o CI ao seu dispor
Jenkins, o CI ao seu dispor
 
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
 
Aplicações 12 fatores, melhor com Docker
Aplicações 12 fatores, melhor com DockerAplicações 12 fatores, melhor com Docker
Aplicações 12 fatores, melhor com Docker
 
TDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps JavaTDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps Java
 
Minicurso Git Semcomp Beta
Minicurso Git   Semcomp BetaMinicurso Git   Semcomp Beta
Minicurso Git Semcomp Beta
 
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ....NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...
 
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas....NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021
 
.NET Core e ASP.NET Core: Presente e Futuro - .NET SP - Novembro/2018
.NET Core e ASP.NET Core: Presente e Futuro - .NET SP - Novembro/2018.NET Core e ASP.NET Core: Presente e Futuro - .NET SP - Novembro/2018
.NET Core e ASP.NET Core: Presente e Futuro - .NET SP - Novembro/2018
 
Web open source
Web open sourceWeb open source
Web open source
 

Similaire à Ferramentas Essenciais para Desenvolvedores de Plugins WordPress

Similaire à Ferramentas Essenciais para Desenvolvedores de Plugins WordPress (20)

Seguindo padrões: Codificando profissionalmente com PHP Sniffer
Seguindo padrões: Codificando profissionalmente com PHP SnifferSeguindo padrões: Codificando profissionalmente com PHP Sniffer
Seguindo padrões: Codificando profissionalmente com PHP Sniffer
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
Vagrant uma ferramenta realmente útil e versátil
Vagrant   uma ferramenta realmente útil e versátilVagrant   uma ferramenta realmente útil e versátil
Vagrant uma ferramenta realmente útil e versátil
 
Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend Framework
 
Meetup-Churrops
Meetup-ChurropsMeetup-Churrops
Meetup-Churrops
 
Xdebug seus problemas acabaram - TDC - PHPeste
Xdebug   seus problemas acabaram - TDC - PHPesteXdebug   seus problemas acabaram - TDC - PHPeste
Xdebug seus problemas acabaram - TDC - PHPeste
 
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
 
WP Composer
WP ComposerWP Composer
WP Composer
 
Composer dependency manager - TDC - POA 2017
Composer   dependency manager - TDC - POA 2017Composer   dependency manager - TDC - POA 2017
Composer dependency manager - TDC - POA 2017
 
12 factor app. Melhor com Docker
12 factor app. Melhor com Docker12 factor app. Melhor com Docker
12 factor app. Melhor com Docker
 
Lab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvLab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenv
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
 
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
 
Iniciando com django
Iniciando com djangoIniciando com django
Iniciando com django
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigital
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniter
 
Postgresql 50 Sabores - PgDay Ceará 2013
Postgresql 50 Sabores - PgDay Ceará 2013Postgresql 50 Sabores - PgDay Ceará 2013
Postgresql 50 Sabores - PgDay Ceará 2013
 
Django
DjangoDjango
Django
 

Ferramentas Essenciais para Desenvolvedores de Plugins WordPress

  • 1. Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt @tiagoscd
  • 2. Tiago Hillebrandt ● Head of DevOps na Rainmaker Digital Services ● Trabalha diariamente em uma estrutura com milhares de instalações WordPress ● Colaborador de diversos projetos de software livre, tais como WordPress, WP-CLI, Ubuntu, dentre outros https://twitter.com/tiagoscd Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 3. ● Se cada vez que você vê um repositório com essa estrutura de arquivos você se pergunta WTF?, essa palestra é pra você. ● Cada uma das ferramentas mencionadas nesta apresentação já estão consolidadas no mercado, e são amplamente utilizadas por diversas empresas de desenvolvimento de plugins. Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 4. Ferramentas Essenciais ● Vagrant ● Composer ● PHP Code Sniffer ● Npm ● Grunt ● EditorConfig ● readme.txt ● Readme Validator ● WP Readme Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd ) Plugin de exemplo que usaremos na apresentação: https://github.com/tiagohillebrandt/wordcamp-example-plugin/
  • 5. Vagrant ● Permite criar ambientes de desenvolvimento em máquinas virtuais ● Possibilita a criação de ambientes locais mais próximos ao de produção ● Diversas imagens (boxes) estão disponíveis gratuitamente na Vagrant Cloud: ○ ubuntu/xenial64: Ubuntu 16.04 Xenial Xerus ○ debian/jessie64: Debian 8 Jessie ○ centos/7: CentOS 7 ● Box para desenvolvedores WordPress: https://varyingvagrantvagrants.org/ ○ https://varyingvagrantvagrants.org/docs/en-US/installed-packages/ Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 6. Vagrant Instalação ● Acessar a página do Vagrant e baixar a versão de acordo com o seu sistema operacional: ○ https://www.vagrantup.com/downloads.html ● Requer um software de virtualização: ○ VirtualBox ○ VMware ○ Docker ○ Hyper-V ○ Outros Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 7. Vagrant Como funciona? Criando um novo ambiente Vagrant: $ mkdir my-wp-plugin $ cd my-wp-plugin $ vagrant init ubuntu/xenial64 Ligando a máquina virtual: $ vagrant up Acessando a máquina virtual: $ vagrant ssh Desligando a máquina virtual: $ vagrant halt Ao desligar, todos os dados são preservados. Destruindo a máquina virtual: $ vagrant destroy Ao destruir, todos os dados serão apagados. Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 8. Composer ● Ferramenta para gerenciamento de dependências em PHP ● Permite a declaração e gerenciamento de bibliotecas que seu o projeto depende para funcionar ○ https://packagist.org/ ● Conceito similar ao de outros gerenciadores de dependências: ○ npm (Node.js) ○ bundler (Ruby) ○ pip (Python) ○ apt-get (Debian/Ubuntu) Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 9. Composer Instalação ● Bash (Linux, Unix, Mac): ○ curl -sS https://getcomposer.org/installer | php ○ sudo mv composer.phar /usr/local/bin/composer ● Pacote PHAR: ○ https://getcomposer.org/composer.phar ● Windows: ○ https://getcomposer.org/Composer-Setup.exe Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 10. Composer Como funciona? ● Caso queira instalar a biblioteca bootstrap no seu projeto: $ composer require twbs/bootstrap ● Ao rodar esse comando em um novo projeto: ○ O arquivo composer.json será criado incluindo o nome da biblioteca que você está instalando. ○ O arquivo composer.lock será criado com detalhes da versão sendo instalada atualmente no projeto. ○ O diretório vendor/ será criado e o bootstrap será instalado dentro dele. ● Commitar os arquivos composer.json e composer.lock junto com seu projeto. ● O diretório vendor/ nunca deve ser commitado (adicionar ao .gitignore). https://github.com/tiagohillebrandt/wordcamp-example-plugin/blob/master/composer.json Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 11. Composer Como funciona? ● Se você baixar qualquer projeto cujo arquivo composer.json já exista, basta acessar o diretório onde o arquivo se encontra e rodar: $ composer install ● O Composer irá ler os arquivos .json e .lock e instalar as dependências listadas neles dentro do diretório vendor/. Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 12. PHP Code Sniffer ● Permite a definição e validação de padrões de desenvolvimento (coding standards) para seu projeto ● Importante para manter a consistência do código ● Coding standards do WordPress: ○ https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/ ● Extensões: ○ Para verificar se seu código é compatível com os coding standards do WordPress: ■ https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards ○ Para verificar se seu código é compatível com uma determinada versão do PHP: ■ https://github.com/wimg/PHPCompatibility Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 13. PHP Code Sniffer Instalação ● Instalando o PHPCS: $ composer require squizlabs/php_codesniffer --dev ● Instalando a extensão WPCS: $ composer require wp-coding-standards/wpcs --dev ● Instalando a extensão PHPCompatibility: $ composer require wimg/php-compatibility --dev Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 14. PHP Code Sniffer Instalação ● Habilitando as extensões no PHPCS: $ ./vendor/bin/phpcs --config-set installed_paths vendor/wp-coding-standards/wpcs/,vendor/wimg/php-compatibility/ ● Outra opção carregar as extensões dentro do próprio composer.json: "scripts": { "post-update-cmd": [ "./vendor/bin/phpcs --config-set installed_paths vendor/wp-coding-standards/wpcs/,vendor/wimg/php-compatibility/" ] } Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 15. PHP Code Sniffer Como funciona? Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd ) ● Os padrões de desenvolvimento são definidos dentro do arquivo phpcs.xml.dist ou ruleset.xml ○ https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml ● PHPCS oferece suporte nativo aos padrões PSR2, Zend, Squiz, PEAR e PSR1 ● Se uma determinada regra (sniff code) do padrão não for necessária no seu projeto, você pode desabilitá-la através da tag exclude ● Exemplo de configuração: ○ https://github.com/tiagohillebrandt/wordcamp-example-plugin/blob/master/phpcs.xml.dist
  • 16. PHP Code Sniffer Quem usa? ● WP-CLI ○ https://github.com/wp-cli/wp-cli/blob/master/phpcs.xml.dist ● WooCommerce ○ https://github.com/woocommerce/woocommerce/blob/master/phpcs.ruleset.xml ● Yoast SEO ○ https://github.com/Yoast/wordpress-seo/blob/trunk/phpcs.xml ● WP Healthcheck ○ https://github.com/wp-healthcheck/wp-healthcheck/blob/develop/phpcs.xml.dist ● Genesis Framework Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 17. npm ● Gerenciador de pacotes para Node.js ● Usado para gerenciar as dependências em JavaScript ● Ou seja, assim como o Composer, o npm permite a declaração e gerenciamento de bibliotecas que o seu projeto necessita ○ https://www.npmjs.com/ Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 18. npm Instalação ● Ao instalar o Node.js em sua máquina, o npm já será instalado com ele ● Debian/Ubuntu: $ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - $ sudo apt-get install -y nodejs ● Outras plataformas: ○ https://nodejs.org/en/download/ Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 19. npm Como funciona? ● O primeiro passo é acessar o seu projeto e rodar o seguinte comando: $ npm init ● Ao rodar o comando acima, algumas informações serão solicitadas, e no fim o arquivo package.json será criado no seu projeto. ● Agora estamos prontos pra usar o npm no nosso projeto. Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 20. npm Como funciona? ● Caso queira instalar o Gulp no seu projeto: $ npm install gulp --save-dev ● Ao rodar esse comando em um novo projeto: ○ O arquivo package.json será atualizado incluindo o nome da biblioteca que você está instalando. ○ O arquivo package-lock.json será criado com detalhes da versão sendo instalada atualmente no projeto. ○ O diretório node_modules/ será criado e o Gulp será instalado dentro dele. ● Commitar os arquivos package.json e package-lock.json junto com seu projeto. ● O diretório node_modules/ nunca deve ser commitado (adicionar ao .gitignore). https://github.com/tiagohillebrandt/wordcamp-example-plugin/blob/master/package.json Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 21. Grunt ● Execução de tarefas em JavaScript pela linha de comando ● As tarefas são configuradas dentro de um arquivo JS, geralmente chamado Gruntfile.js ● Ao instalar certos plugins, você pode automatizar várias tarefas do seu projeto com o Grunt: ○ Gerar o catálogo de traduções do seu plugin (arquivo POT) ○ Verificar se as funções de localização (i18n) do WordPress foram usadas corretamente ○ Compilar Sass para CSS ○ Minificar os arquivos JavaScript e CSS ○ Averiguar a qualidade do seu código JavaScript (linting) ○ Criar um arquivo zip do seu plugin (build) ○ Dentre outras ● Página oficial com os plugins disponíveis: ○ https://gruntjs.com/plugins Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 22. Grunt Instalação ● Primeiro precisamos criar um arquivo package.json para seu projeto: $ npm init ● Ao rodar o comando acima, no campo entry point informe o nome Gruntfile.js ● Feito isso, para instalar o Grunt: $ npm install grunt --save-dev ● Para executar o Grunt: $ node_modules/grunt/bin/grunt Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 23. Grunt Gruntfile.js ● Configuração das tarefas que serão executadas no seu projeto ● É possível criar custom tasks, que compreendem um conjunto de tarefas a serem executadas ● Se o nome da tarefa não for passado como parâmetro ao chamar o Grunt, a tarefa default será executada automaticamente ● Exemplo de configuração: ○ https://github.com/tiagohillebrandt/wordcamp-example-plugin/blob/master/Gruntfile.js Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 24. Grunt Quem usa? ● jQuery ○ https://github.com/jquery/jquery/blob/master/Gruntfile.js ● WordPress ○ https://develop.svn.wordpress.org/trunk/Gruntfile.js ● WooCommerce ○ https://github.com/woocommerce/woocommerce/blob/master/Gruntfile.js ● Yoast SEO ○ https://github.com/Yoast/wordpress-seo/blob/trunk/Gruntfile.js ● Bootstrap ○ https://github.com/twbs/bootstrap/blob/master/Gruntfile.js ● WP Healthcheck ○ https://github.com/wp-healthcheck/wp-healthcheck/blob/develop/Gruntfile.js Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 25. EditorConfig ● Usado para definir e manter um estilo de codificação consistente entre diferentes editores e IDEs ● Você declara as propriedades (indentação, codificação, etc) no arquivo .editorconfig ○ https://github.com/editorconfig/editorconfig/wiki/EditorConfig-Properties ● Ao abrir o editor ou IDE, ele lê o arquivo e adere ao estilo de codificação definido no .editorconfig ● É necessário baixar o plugin para seu editor ou IDE: ○ http://editorconfig.org/#download Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 26. EditorConfig Quem usa? ● PHP ○ http://git.php.net/?p=php-src.git;a=blob_plain;f=.editorconfig;hb=HEAD ● WordPress ○ https://develop.svn.wordpress.org/trunk/.editorconfig ● WooCommerce ○ https://github.com/woocommerce/woocommerce/blob/master/.editorconfig ● jQuery ○ https://github.com/jquery/jquery/blob/master/.editorconfig ● WP-CLI ○ https://github.com/wp-cli/wp-cli/blob/master/.editorconfig ● Yoast SEO ○ https://github.com/Yoast/wordpress-seo/blob/trunk/.editorconfig Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 27. ● Arquivo com informações sobre o plugin ● Pode conter a descrição, passos para instalação, perguntas frequentes, listagem de screenshots, changelog, notas de upgrade, dentre outras coisas ● É usado para gerar a página do plugin no WordPress Plugin Directory: ○ https://developer.wordpress.org/plugins/wordpress-org/how-your-readme-txt-works/ ● Oferece suporte a Markdown: ○ https://daringfireball.net/projects/markdown/syntax ● Diferente do README.md ● Requerido no processo de submissão de plugins para o WordPress Plugin Directory readme.txt Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 28. Readme Validator ● Permite validar o conteúdo do seu readme.txt ○ https://wordpress.org/plugins/developers/readme-validator/ ● No entanto, ele não permite que você pré-visualize o conteúdo do seu arquivo Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 29. WP Readme ● Assim como o Readme Validator, valida o conteúdo do seu readme.txt ● Além de validar, você também consegue pré-visualizar seu readme.txt https://wpreadme.com/ Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 30. Plugin: WP Healthcheck ● Plugin para verificar o estado da sua instalação WordPress ● Verifica o número e tamanho de Transients e Autoload Options ● Limpeza de Transients e desativação de Autoload Options ● Verifica a versão dos softwares instalados no servidor: ○ PHP ○ MySQL/MariaDB ○ WordPress ○ Servidor web ● Em breve: notificações quando o seu certificado SSL estiver próximo da data de expiração Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )
  • 31. Plugin: WP Healthcheck Disponível gratuitamente para download. ● WordPress Plugin Directory: ○ https://wordpress.org/plugins/wp-healthcheck/ ● WP-CLI: ○ wp plugin install wp-healthcheck Ferramentas Essenciais para Desenvolvedores de Plugins WordPress Tiago Hillebrandt ( @tiagoscd )