O WordPress é um CMS amplamente utilizado em todo o mundo mas manter algumas boas práticas com ele é algo um pouco custoso, um exemplo disso é o versionamento. Normalmente os desenvovedores não separam o core do WordPress de sua regra de negócio, e isso é ruim pois induz o mesmo à versionar coisas desnecessárias e erroneamente realizar alterações hard-code no core do CMS e/ou plugins de terceiros. Hoje vou mostrar como resolver este problema. Como bem sabemos, a proposta do composer é que você gerencie suas dependências através dele, versionando somente o que é o necessário, SUA aplicação. Neste post vou mostrar como versionar somente a sua aplicação, sua regra de negócio utilizando Git, Wordpress e Composer. Vamos lá?
/* # ignoramos TUDO do repositório !/composer.json # Realizando tratamento de ignores de temas e plugins # ver: https://stackoverflow.com/questions/5533050/gitignore-exclude-folder-but-include-specific-subfolder # na resposta com título "gitignore.txt: clarify recursive nature of excluded directories" # Designoramos o diretório wp-content !/wp-content # e ignoramos tudo (parece estranho, mas é assim que funciona) /wp-content/* # o mesmo faremos para os diretorios de plugins e temas, ignoramos # o diretório como um todo e designoramos os plugins e temas que # estamos desenvolvendo somente # Tratando ignores para os plugins desejados !/wp-content/plugins /wp-content/plugins/* !/wp-content/plugins/seu-plugin-1 !/wp-content/plugins/seu-plugin-2 # Tratando os ignores para os temas desejados !/wp-content/themes /wp-content/themes/* !/wp-content/themes/seu-temaAgora já está tudo pronto para começarmos a desenvolver nossos plugins e temas. Obviamente que para a maioria dos casos precisaremos de alguns plugins de terceiros e é justamente neste ponto que o projeto WordPress Packagist se empenha, em tornar gerenciáveis nossas dependências de plugins e até de temas seguindo a mesma lógica do packagist, repositório oficial do composer. Desta forma ainda temos mais um passo que é inicializar o composer em nosso projeto. No Netbeans clique com o direito do mouse no nome de seu projeto e na seção "Composer" clique em "Init". O resultado deve ser como abaixo. Deve ser gerado um arquivo chamado composer.json que é onde informaremos os plugins que utilizaremos. No arquivo composer.json precisamos informar qual é o repositório que utilizaremos. Isto se faz necessário porque se não definido um repositório, o composer tenta obter o pacote diretamente do packagist e desta forma não localizando os plugins e temas do wordpress. Antes da tag "require" adicione o seguinte conteúdo:
"repositories":[ { "type":"composer", "url":"https://wpackagist.org" } ],Em seguida vamos informar quais os plugins utilizaremos. Os plugins são todos que estiverem presentes no repositório svn do WordPress e que podem ser vistos aqui. Em seu arquivo composer.json adicione os plugins e temas desejados sempre indicando como vendor o projeto wpackagist seguido do tipo de projeto a obter (plugin ou theme) separados apenas por um hífen ( - ) adicionando uma barra (/) e em seguida o nome do pacote e a versão como já de costume do padrão do composer.
"require": { "wpackagist-plugin/captcha":">=3.9", "wpackagist-theme/hueman":"*" }Perfeito, agora basta instalar! Se você chegou até aqui com os mesmos resultados que eu, muito bem tudo funcionou perfeitamente. Caso tenha encontrado algum erro no caminho faz o que todo bom desenvolvedor faz, analisa os erros, lê as sugestões que as próprias ferramentas (Netbeans, composer, git) lhe dão afim de encontrar a solução. Perceba que eu não inicializei o repositório com o Git, caso não tenha trabalhado com o Git ainda sugiro que comece hoje mesmo! Em todo caso aí vai a dica: em seu terminal (não de ônibus mas sim aquela tela preta de seu sistema operacional) entre no diretório onde você criou seu projeto através do Netbeans e digite git init. Isto inicializará o versionamento (desde que o git esteja instalado é claro). Em seguida digite git add . (o ponto deve estar junto sim, ou então digite git add --all). Feito isso devem ser adicionados ao versionamento somente os arquivos .gitignore, seus temas e seus plugins excluídos do gitignore, todo o wordpress e vendors gerenciados pelo composer devem ser ignorados.