Montando um projeto WordPress com Composer

Durante muito tempo, ao criar novos projetos usando WordPress, eu caía no dilema de como organizar o repositório.

Por um lado, eu queria que o repositório ficasse o mais limpo e leve possível, apenas com as coisas nas quais eu realmente estava trabalhando. Por outro lado, eu queria ter controle da versão do WordPress e dos plugins que eu estava usando no meu projeto. Deixar apenas o tema em que estava trabalhando no repositório acabava deixando o processo de deploy mais trabalhoso e inseguro, porque não estava registrado em nenhum lugar as versões em que aquele tema tinha sido desenvolvido.

A solução mais fácil era sempre adicionar o WordPress inteiro ao repositório, assim como os plugins de terceiros, e lá no meio desse monte de coisa, o meu tema, e eventualmente algum plugin que realmente fosse o que estava desenvolvendo.

Trabalhando em outros projetos, tive contato com o Composer, um gerenciador de dependências para PHP, mas demorei muito tempo para utilizá-lo em projetos WordPress. E só agora paro para relatar e documentar como venho organizando os projetos.

Este post vai mostrar um passo a passo de como montar o seu projeto WordPress usando Composer. Ele assume que você já usa git, conhece o Composer e já tem ele instalado. Se ainda não tem, comece com algum outro tutorial para instalar o composer e entender o básico dele – é bem simples.

Por que usar o Composer?

É comum que nossos projetos web sejam compostos de vários softwares ou bibliotecas desenvolvidos por terceiros. Um projeto de site em WordPress, por exemplo, onde você esteja desenvolvendo um tema sob medida, pode depender de vários plugins para funcionar. Além de plugins, você pode estar usando alguma biblioteca PHP e também precisa administrar essas dependências.

Para facilitar o desenvolvimento, é comum as pessoas colocarem tudo isso dentro do mesmo repositorio: o WordPress, o tema, os plugins, e as bibliotecas. Isso facilita a gestão do projeto, deixando o deploy mais fácil, porém deixa seu repositório imenso e desorganizado. Você está mantendo no seu repositório um monte de software que não é seu e, além disso, não está bem organizado quais são as dependências e em que versão elas estão.

É legal perceber, também, que em um projeto como este, o próprio WordPress é uma dependência.

Utilizando Composer você tem algumas vantagens:

  • Seu repositório fica limpo, apenas com aquilo que realmente você está desenvolvendo
  • Suas dependências estão explicitamente declaradas em um único lugar
  • A instalação e atualização das dependências é gerenciada pelo Composer
  • Suas dependências ficam seguras nas versões que você sabe que funcionam
  • Gera bem estar e paz de espírito

Vamos ver como fazer isso, para que você não precise manter o WordPress no seu repositório, mas siga tendo controle sobre qual versão está utilizando e ainda tenha uma ferramente ágil para fazer deploys e atualizações automatizadas.

Como fazer

Ok, você já está convencido de que isso é uma boa ideia, então mãos a obra.

Vamos começar um projeto do zero, com uma pasta vazia chamada ‘meusite’, e digamos que esta pasta será a pasta raíz do seu site.

Em uma instalação normal, você colocaria todos os arquivos do WordPress nesta pasta, e dentro dela também estariam as subpastas do WordPress wp-admin, wp-content e wp-includes. Aqui começaremos a fazer as coisas de maneira diferente.

Vamos começar criando nosso arquivo composer.json, que irá declarar quais são as dependências do nosso projeto. Crie um arquivo com este nome e coloque este conteúdo:


{
	
"require": {
		"johnpbloch/wordpress": "4.7.*"
	},
	"extra": {
		"wordpress-install-dir": "wp"
	}
}

Vamos entender o que este arquivo esta fazendo:

Em “require” estamos falando que nosso projeto depende do WordPress. A versão oficial do WordPress não inclui um arquivo composer.json e por isso utilizamos um fork, que é amplamente utilizado hoje em dia. Este fork nada mais é do que uma cópia exata do WordPress, atualizada a cada 15 minutos, adicionada do arquivo composer.json. Isso nos permite fazer a instalação e atualização.

Ainda neste momento estamos falando que queremos a versão 4.7.*. Isso significa que as atualizações de segurança (4.7.1, 4.7.2, etc) poderão ser feitas automaticamente quando rodarmos o comando composer update. Mas o projeto nunca passará para a versão 4.8 do WordPress (quando ela for lançada), a não ser que editemos este arquivo e façamos esta modificação.

A seção “extra” modifica o comportamento padrão do composer, que é instalar todas as dependências em uma pasta chamada vendor, e indica que queremos instalar o WordPress em uma pasta chamada wp.

Dessa maneira, ao rodarmos o comando composer install, será criada uma pasta “wp”, com todo o WordPress dentro dela. Essa pasta wp vamos colocar no .gitignore e nunca vamos enviá-la ao nosso repositório. No nosso repositorio vamos colocar apenas o tema que estamos trabalhando.

Percebam que agora o WordPress não está na raíz do seu site, e sim em um subdiretorio chamado “wp”. Portanto, temos duas coisas ainda para fazer:

  1. Mudar a pasta raíz do WordPress
  2. Mudar a localização da pasta wp-content do WordPress, para podermos deixar nosso tema fora da árvore do WordPress criada automaticamente pelo Composer e que não existirá no nosso repositório

Para mudar a pasta raíz do WordPress, vamos criar um arquivo chamado index.php com o seguinte conteúdo:


<?php
// WordPress bootstrap
define( 'WP_USE_THEMES', true );
require( './wp/wp-blog-header.php' );

Agora vamos criar nosso wp-config.php, a partir do wp-config-sample.php que vem com o WordPress, e salvá-lo nessa mesma pasta, um nível abaixo do que normalmente ele está.

Nota: Você não vai querer enviar o seu wp-config.php para o repositorio, crie um arquivo wp-config-sample.php na pasta raíz e faça essas modificações nele. Quando estiver pronto, faça uma cópia chamada apenas wp-config.php e insira as informações de banco de dados e senhas. Sempre que eu me referir aqui a modificações no wp-config estou considerando que você está fazendo elas no arquivo de modelo e, depois, replicando para o arquivo que de fato é lido pelo WP, mas que não é incluído no repositório

No seu wp-config, inclua as linhas:


define('WP_SITEURL', 'http://' . $_SERVER['SERVER_NAME'] . '/wp');
define('WP_HOME', 'http://' . $_SERVER['SERVER_NAME'] );

Aqui estamos considerando que sua instalação de WordPress está na raíz do domínio. Se não estiver, inclua aí o caminho completo depois do SERVER_NAME nas duas linhas.

Isso indicará ao WordPress que a raíz do site é uma, mas que o diretório de instalação do WordPress é outro. Você vai perceber que, ao acessar o admin, o endereço do site vai ter esse “wp” a mais.

Agora vamos modificar a pasta wp-content de lugar. Faça uma cópia dessa pasta toda para a pasta raíz do seu site. Em seguida, edite o wp-config e adicione as seguintes linhas:


define('WP_CONTENT_DIR', dirname( __FILE__ ) . '/wp-content' );
define('WP_CONTENT_URL', 'http://' . $_SERVER['SERVER_NAME'] . '/wp-content' );

Novamente, adicione o caminho completo depois de SERVER_NAME caso sua instalação esteja em um subdiretorio.

Isso está informando o WordPress a buscar a pasta wp-content em outro lugar, e agora você poderá incluir esta pasta wp-content, com o seu tema, sem precisar adicionar o WordPress inteiro no seu repositório.

Você pode agora acessa o navegador e rodar a instalação padrão do WordPress.

No final desse processo, sua pasta “meusite” tem os seguintes conteúdos:


wp-content
wp (* não será adicionada ao repositorio)
vendor (* não será adicionada ao repositorio)
wp-config-sample.php
wp-config.php (* não será adicionada ao repositorio)
index.php
composer.json
composer.lock 

Para garantir que nada é incluído no reposítório por engano, crie um arquivo chamado .gitignore com o seguinte conteúdo:


wp
vendor
wp-config.php 

Pronto. Você já tem um repositório com WordPress e pode adicionar seu tema na pasta wp-content. Seu repositório já está muito menor e mais organizado.

De agora em diante, para montar o ambiente deste projeto é só fazer git clone e, em seguida, composer install.

Mas e se tivermos outros plugins ou temas como dependências para o nosso projeto? Vamos ver isso agora.

Temas e plugins

A maneira mais fácil de adicionar temas ou plugins que estejam publicados no repositório oficial do WordPress é utilizar o repositório de pacotes WordPress Packagist.

Este site espelha todos os temas e plugins de WordPress e os prepara para serem utilizados pelo composer. Além disso, ele categoriza os pacotes, diferenciando temas plugins e mu-plugins, e já os pré-configurando para serem instalados dentro da pasta wp-content, e não na pasta vendor como normalmente o composer faz.

Para utilizar esse repositório precisamos declará-lo no nosso composer.json e, em seguida, podemos adicionar os temas e plugins que quisermos. Veja como fica nosso arquivo com alguns plugins:

{
	"repositories": [
		{
		"type": "composer",
		"url": "http://wpackagist.org"
		}
	],
	"require": {
		"johnpbloch/wordpress": "4.7.*",
		"wpackagist-plugin/advanced-custom-fields": "*",
		"wpackagist-plugin/posts-to-posts": "1.4.*"
	},
	"extra": {
		"wordpress-install-dir": "wp"
	}
}

Repare que, agora, apenas olhando para este arquivo, você já consegue ter uma visão geral do projeto e de suas dependências.

Toque final

Para deixar tudo ainda mais organizado, você pode querer remover do seu repositório algumas coisas que vem como padrão na pasta wp-content do WordPress mas que não serão usadas.

Por exemplo, você pode remover todos os temas twenty-* e o plugin “Hello Dolly”. Basta removê-los.

Outra dica útil, que agiliza o processo de instalação, é definir o tema que será usado por padrão, que provavelmente será o que você está desenvolvendo. Você pode definir isso no wp-config, e assim não será necessário fazer isso via admin. Basta adicionar essa linha:


define('WP_DEFAULT_THEME', 'meutema');

Referências

Aqui abaixo algumas referências boas usadas pra fazer esse post.

https://roots.io/using-composer-with-wordpress/

https://davidwinter.me/install-and-manage-wordpress-with-composer/

https://deliciousbrains.com/install-wordpress-subdirectory-composer-git-submodule/

Montando um projeto WordPress com Composer

Cultura Viva na America Latina

Foi muito lindo acompanhar, na semana passada, o encontro de Pontos de Cultura da Argentina, lá em Buenos Aires. Foi especialmente emocionante acompanhar o lançamento do III Congresso Latino Americano de Cultura Viva Comunitária, que acontecerá no Equador em novembro do ano que vem (foto).

img_20161201_205648349

É incrível ver como este programa, que teve um impacto tremendo aqui no Brasil, agora serve de inspiração e referência para o resto do mundo. Ver os mestres das culturas andinas, e fazedores culturais de outras paragens, se encantarem e se entusiasmarem com tudo aquilo que vimos ser gestado aqui, e, de repente, ver de novo o brilho no olhar das pessoas descobrindo e construindo uma política pública para a cultura de baixo para cima, focada no empoderamento e no protagonismo de quem já faz cultura há séculos neste continente. Mais além, é ver o fortalecimento de uma rede que entende que a disputa civilizatória na qual estamos agora deve ser feita a partir da cultura. É intenso. Ainda mais em países com culturas pré-colombianas muito fortes e presentes.

Fui a convite do programa Iber Cultura Viva, compartilhar experiências com representantes de muitos outros países sobre construção de mapas e indicadores para a cultura. Foi intenso e gratificante. Obrigado!

 

Cultura Viva na America Latina

Debate sobre redução de velocidade nas marginais

É realmente impressionante que a redução da velocidade nas marginais seja um tema tão recorrente nos debates políticos em São Paulo. Impressionante e patético.

Patético porque, se comparado aos comprovados benefícios da redução , o “transtorno” que a medida causa é ridículo: 8 minutos – no máximo!

O paulistano que se sente tolhido por ter que andar um pouco mais devagar reclama como quem teve um prejuízo imenso. Candidatos dizem que a redução prejudica profissionais que usam a via.

Veja bem, a marginal tem cerca de 41 km, em um trajeto da Ponte Panamericana, na marginal Pinheiros, até a saída para a Rodovia Ayrton Senna, na Tietê. Este trecho, a 90 km/h leva aproximadamente 27 minutos para ser percorrido. O mesmo trecho a 70 km/h leva 35 minutos. A partir dessa elaborada matemática diagnosticamos o incrível impacto de 8 minutos a mais no deslocamento.

Isso, obviamente, sem nenhum trânsito, o que só acontece de madrugada, e em um trecho muito improvável, pois é raro você ter que cruzar a marginal toda de ponta a ponta. Hoje temos o rodoanel para evitar justamente isso.

Se pegarmos um trecho mais factível, como apenas a Marginal Tietê, da saída da Castelo Branco até a Ayrton Senna, são cerca de 22km – mais ou menos a metade. Nesse caso, atingimos a incrível marca de 4 minutos a mais para cruzar a marginal Tietẽ.

4 minutos!!

Então parece que esses 4 minutos, que só podem ser gozados em viagens de madrugada, valem muito mais do que as vidas salvas pela redução de velocidade.

Não sei nem mais o que dizer. Não é discussão séria sobre a cidade, é birra.

Debate sobre redução de velocidade nas marginais

E quem não quer que Dilma volte, apoia Temer?

Essa é a sinuca em que estamos. O “Fora Temer” crescendo a cada dia, mas poucos sinais de novas pessoas aderindo ao “Volta, querida”. Como resolver esta equação?

Não existe uma boa saída. Tudo indica que teremos muitos anos de instabilidade e conflitos na política, até termos condições de crescer novamente – digo como nação, não como economia. Uma década talvez. Qualquer coisa diferente disso, qualquer calmaria precoce, indicará que deixamos de enfrentar de frente nossos problemas e que jogamos a sujeira pra baixo do tapete em prol de uma suposta tranquilidade.

Temer ficar é um desastre. Por vários motivos. Em primeiro lugar por sua ilegitimidade. Em segundo lugar, por fazer parte de uma quadrilha criminosa. E, por último, mas não menos importante, por seu projeto fracassado de país. Nos setores com os quais mais se preocupou, como a economia e as relações exteriores, o problema não é, necessariamente, de competência, mas de visão de mundo – e aqui estamos abertos a discordar e discutir. Agora, em todas as outras áreas, todos temos que concordar que o que vemos na esplanada é terra arrasada, com ministros e quadros técnicos despreparados, pagando a fatura enviada pela câmara para aprovar o impeachment. (não quero deixar esse texto longo demais, então não entro em exemplos, só digo que não se compara ao que havia antes).

Novas eleições são assustadoras. Só para presidente? Mantendo deputados e senadores? Quais seriam os candidatos? Quem hoje, no meio desta lama, e com projeção nacional, teria condições de conquistar a confiança da nação? Aparentemente ninguém. Nesse cenário, a quem estaríamos entregando legitimidade para governar o país?

Por fim, caso Dilma volte a presidência, tudo indica que o país fica ingovernável. Se já não havia condições antes, elas não melhoraram. Aliás, todos dizem que o grande problema dela é a incapacidade de diálogo. Talvez este tenha sido seu maior crime, se recusar a dialogar com Cunha e sua laia e, ao se cansar de tentar fazer acordos com bandidos, se isolou. É só uma hipótese. Romântica. Independente disso, não podemos poupá-a de seus erros e da participação do seu partido nos esquemas de corrupção.

Voltando a provocação original, é por isso que boa parte da sociedade está paralisada, sem conseguir agir. Quer os corruptos fora, mas não quer o retorno de Dilma; acha que vai tudo explodir e, na verdade, cansou. Chega. Será que não podemos virar a página e seguir em frente?

É preciso ter coerência e coragem. É desonesto engolir Temer e aceitar esta ruptura da democracia, apoiada em processos jurídicos frágeis, e fundada em interesses sórdidos. Ao fazer isso, você aceita que não está realmente interessado em combater a corrupção. Ao contrário, está disposto a aturá-la, desde que seja operada pelos velhos políticos de sempre, e que possamos parar de falar disso para curtir as olimpíadas.

Eu quero a defesa da democracia e de seus ritos. Eu quero ampla participação popular nas decisões que se seguirão para resolver esta crise. Por isso, de todas as opções, escolho a volta da presidente eleita.

O Brasil está passando por um processo fundamental no amadurecimento da sua democracia. Não podemos interrompê-lo. Apoiadores do impeachment costumavam dizer “primeiro tiramos a Dilma, depois todo o resto”. Pois bem, poupar Temer e seu governo interino é ir contra esta intenção.

O que virá depois não será bom. E não será fácil. Mas como disse, não existe uma boa saída. Este é apenas o começo de uma caminhada, que pode culminar na reconstrução de um país democrático, ou que pode jogá-lo 40 anos para trás na história. A escolha é nossa.

E quem não quer que Dilma volte, apoia Temer?

Sobre a extinção do MinC

Um esclarecimento que vale fazer. O Ministério da Cultura não é para os artistas. Nem mesmo para os ‘fazedores de cultura’ ou para as pessoas que trabalham com a cultura.

O Ministério da Cultura é para toda a sociedade, assim como o Ministério da Saúde não é para os médicos e o Ministério da Educação não é para os professores. (essa metáfora não é minha mas não sei de quem é)

A confusão é compreensível, já que a noção de direitos culturais é nova, e a política pública de cultura para promover esses direitos mais nova ainda. Data, precisamente, de 2003, quando o MinC deixou de ser um balcão de projetos para artistas e passou a servir a sociedade de maneira mais ampla.

As críticas ao MinC e à ‘classe artística’ que o defende é uma crítica voltada ao MinC do século passado. Ou seja, não querem só acabar com o MinC, querem tranformá-lo no que ele era nos anos 90 para, depois, acabar com ele.

O papel da cultura, e da promoção dos direitos culturais, é fundamental para a evolução da civilização. Não é a toa que os artistas se mobilizam tanto. Historicamente a arte tem esse papel, de quebrar a normalidade e apontar os caminhos para o futuro.

Todas as crises que vivemos só serão superadas se abordadas do seu ponto de vista cultural. A crise política é cultural, a crise ambiental é, também, cultural, a intolerância com as diferenças é uma questão cultural. Até a crise econômica tem uma dimensão essencial que é cultural.

Estamos no século XXI, temos ferramentas do século XXI para enfrentar esses problemas, mas ainda estamos, em grande medida, presos a cultura do século XIX e, por isso, não avançamos.

E pra quem cita países desenvolvidos que não tem Ministério da Cultura, pode crer que eles gostariam de ter e invejam o Brasil por isso.

Sobre a extinção do MinC

Direito de roubar

O silêncio generalizado em relação aos grandes crimes de sonegação (o caso do vazamento das contas do HSBC, a operação Zelotes e o recente protesto dos procuradores da Fazenda) em oposição ao grande barulho dos escândalos de corrupção no governo (com especial atenção aos que envolvem um certo partido) escondem uma crença perigosa: a de que “sonegação não é tão grave assim, afinal, de que adianta pagar impostos se o governo rouba e é ineficiente?”.

Me parece que os ricos têm, além de todos os privilégios que sabemos, mais este: o de poder roubar. Afinal, eles sabem melhor como cuidar do dinheiro. Seja na sonegação ou na ocupação irregular de terra do clube Pinheiros e das mansões em Brasília, os ricos acham que tem o legítimo direito de se apropriar da riqueza coletiva.

Os procuradores federais alertaram. Foram 200 bilhões só em 5 meses. Já se fala em um terço de todo o PIB mundial em paraísos fiscais. Não há roubo maior. Não há corrupção em nenhum governo no mundo que gere mais desigualdade do que esta apropriação indevida de riqueza encabeçada pelo sistema financeiro.

Direito de roubar

Por que devemos continuar indo para as ruas

Pelos vinte centavos.

Sim, ontem foi lindo, e todo mundo, inclusive eu, disse que era por muito mais do que vinte centavos. Mas agora precisamos focar nos vinte centavos.

Precisamos ganhar essa briga para abrirmos as portas para as próximas.

Os vinte centavos não são pequenos, nem do ponto de vista econômico, nem do político.

Não é pouco porque, como já disse o prefeito, a conta não fecha. E não fecha mesmo. Por isso é preciso que se invente outra conta.

Ganhar a briga dos vinte centavos significa abrir espaço no governo para se pensar uma mudança profunda nas prioridades políticas. Sabemos que tem dinheiro. Sabemos que os subsídios para o transporte particular são muito maiores que os para o transporte público. Sabemos que as contas hoje são uma caixa-preta. Sabemos que há solução, mas que pra isso é preciso muita vontade e coragem política pra mexer com um monte de gente que está acomodada em um modelo muito bem estruturado e confortável.

Ganhar essa briga significa abrir um novo modelo de criação de políticas públicas, com ampla participação da sociedade, indicando caminhos e apontando problemas.

Precisamos ganhar essa briga, sem dispersar, sem cair em um movimento genérico de indignação, facilmente apropriado por todas as parcelas da sociedade, das mais radicais as mais conservadoras.

Temos que ir em frente.

Pelo passe livre! Pela revogação do aumento das tarifas!

Por que devemos continuar indo para as ruas