Sei sulla pagina 1di 24

Brian Messenlehner

Jason Coleman

Novatec

Authorized Portuguese translation of the English edition of Building Web Apps with Wordpress, ISBN
9781449364076 2014 Brian Messenlehner, Jason Coleman. This translation is published and sold
by permission of O'Reilly Media, Inc., which owns or controls all rights to publish and sell the same.
Traduo em portugus autorizada da edio em ingls da obra Building Web Apps with Wordpress, ISBN
9781449364076 2014 Brian Messenlehner, Jason Coleman Esta traduo publicada e vendida com
a permisso da O'Reilly Media, Inc., detentora de todos os direitos para publicao e venda desta obra.
Novatec Editora Ltda. 2014.
Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. proibida a reproduo desta
obra, mesmo parcial, por qualquer processo, sem prvia autorizao, por escrito, do autor e da Editora.
Editor: Rubens Prates
Traduo: Lcia A. Kinoshita
Reviso gramatical: Marta Almeida de S
Editorao eletrnica: Carolina Kuwabata
ISBN: 978-85-7522-377-2 IG20141008
Histrico de impresses:
Outubro/2014

Primeira edio

Novatec Editora Ltda.


Rua Lus Antnio dos Santos 110
02460-000 So Paulo, SP Brasil
Tel.: +55 11 2959-6529
Email: novatec@novatec.com.br
Site: www.novatec.com.br
Twitter: twitter.com/novateceditora
Facebook: facebook.com/novatec
LinkedIn: linkedin.com/in/novatec

captulo 1

Criando aplicaes web com o WordPress

Vamos comear definindo o que uma aplicao web e como ela difere de um
site ou de um web service.
Na verdade, este livro lhe ajudar a criar de tudo com o WordPress: sites, temas,
plugins, web services e aplicaes web. Optamos por focar em aplicaes web
porque elas podem ser vistas como supersites que fazem uso de todas as tcnicas
que sero discutidas.
H muitas pessoas que acreditam que o WordPress no eficaz o suficiente ou
que no foi feito para criar aplicaes web; ento trataremos desse assunto mais
adiante. Criamos aplicaes web com o WordPress h muitos anos e sabemos
que absolutamente possvel criar aplicaes escalveis usando o WordPress.
Neste captulo, discutiremos por que o WordPress um timo framework para a
criao de aplicaes web. Tambm discutiremos algumas situaes em que usar
o WordPress no ser a melhor maneira de criar sua aplicao web.

O que um site?
Voc sabe o que um site. Um site um conjunto de uma ou mais pginas web
contendo informaes e que acessado por meio de um navegador web.

O que uma aplicao?


Gostamos da definio da Wikipedia: Um software aplicativo, tambm conhecido
como aplicao ou app, um software de computador projetado para ajudar o
usurio a realizar tarefas especficas1.
1 N.T.: Traduo livre da citao original em ingls:Application software, also known as an application or an app, is computer software designed to help the user to perform specific tasks.

24

Captulo 1 Criando aplicaes web com o WordPress

25

O que uma aplicao web?


Uma aplicao web somente uma aplicao executada por meio de um navegador web.
Observe que, com algumas aplicaes web, a tecnologia do navegador permanece oculta, por exemplo, quando sua aplicao web integrada a uma aplicao
Android ou iOS nativa, quando um site executado como uma aplicao no
Google Chrome ou quando uma aplicao executada usando o Adobe AIR.
Entretanto, dentro dessas aplicaes, continua havendo um sistema que efetua o
parsing de HTML, de CSS e de JavaScript.
Voc tambm pode pensar em uma aplicao web como um site com partes parecidas com uma aplicao.
No existe uma linha exata a partir da qual um site se torna uma aplicao web.
uma dessas coisas que voc sabe quando v.
O que podemos fazer explicar algumas das caractersticas de uma aplicao web,
dar alguns exemplos e tentar chegar a uma definio concisa para que, em geral,
voc saiba do que estamos falando quando usarmos o termo ao longo do livro.
Voc ver referncias ao SchoolPress enquanto estiver lendo este livro.
O SchoolPress uma aplicao web que estamos criando para ajudar
as escolas e os educadores a administrarem seus alunos e os currculos.
Todos os exemplos de cdigo esto voltados para funcionalidades que
possam existir no SchoolPress. Falaremos mais sobre o conceito geral
do SchoolPress posteriormente neste captulo.

Caractersticas de uma aplicao web


A seguir, esto algumas caractersticas geralmente associadas s aplicaes web e s
aplicaes em geral. Quanto mais dessas caractersticas estiverem presentes em um
site, mais apropriado ser atualizar o seu rtulo para cham-lo de aplicao web.2
Elementos interativos
Uma experincia tpica com um site envolve navegar por pginas carregadas,
fazer rolagens e clicar em hiperlinks. As aplicaes web podem ter links e rolagens tambm, mas tendero a usar outros mtodos de navegao na aplicao.
Os sites com formulrios oferecem experincias transacionais. Um exemplo
pode ser um formulrio de contato em um site ou um formulrio de inscrio
2 Muitas das ideias presentes nesta seo sofreram influncia destas postagens de blog: What is a
Web Application? (O que uma aplicao web?) de Dominique Hazal-Massieux (http://bit.ly/
wiawa) e What is a Web Application? de Bob Baxley (http://bit.ly/wiawa2).

26

Criando Aplicaes Web com WordPress

na pgina de carreiras do site de uma empresa. Os formulrios permitem aos


usurios interagir com um site usando algo que v alm de um clique.
As aplicaes web tero ainda outros elementos interativos de UI. Os exemplos
incluem barras de ferramenta, elementos para arrastar e soltar, editores de
texto rico (rich text) e sliders (controles deslizantes).
Tarefas no lugar de contedo
Lembre-se de que as aplicaes web foram projetadas para ajudar o usurio
a realizar tarefas especficas.
Os usurios do Google Maps recebem orientaes sobre direes a seguir. Os
usurios do Gmail criam emails. Os usurios do Trello administram listas. Os
usurios do SchoolPress fazem comentrios em discusses de classes.
Algumas aplicaes continuam focadas em contedo. Uma sesso tpica com
uma aplicao Facebook ou Twitter envolve cerca de 90% de leitura. Entretanto
as prprias aplicaes apresentam uma maneira de navegar pelo contedo de
maneira diferente da experincia de navegao web comum.
Logins
Logins e contas permitem a uma aplicao web salvar informaes sobre seus
usurios. Essas informaes so usadas para facilitar as tarefas principais da
aplicao e permitir uma experincia de persistncia. Ao ficarem logados, os
usurios do SchoolPress podem ver quais discusses no foram lidas. Eles
tambm tm um nome de usurio que identifica suas atividades na aplicao.
As aplicaes web tambm podem ter nveis de usurio. O SchoolPress ter
administradores que controlam o funcionamento interno da aplicao, professores para criar as classes e alunos que participam das discusses nas classes.
Capacidade de se adequar aos dispositivos
As aplicaes web que executam em seu telefone podem acessar sua cmera,
sua agenda, reas de armazenamento internas e informaes de localizao
do GPS. As aplicaes web que executam no desktop podem acessar uma
webcam ou um disco rgido local. A mesma aplicao web pode responder de
modo diferente, de acordo com o dispositivo que a acessar. As aplicaes web
se ajustaro a diferentes tamanhos de tela, resolues e capacidades.
Trabalhar offline
Sempre que possvel, garantir que suas aplicaes web funcionem offline uma
boa ideia. Certamente, a interatividade com a Internet o que define a parte

Captulo 1 Criando aplicaes web com o WordPress

27

web da aplicao web, porm um site que no pare de funcionar quando


algum dirige por um tnel se parecer mais com uma aplicao.
Podemos criar rascunhos de emails offline no Gmail. O Evernote permite criar
e editar notas offline e sincroniz-las com a Internet quando a conectividade
for restaurada.
Mashups
As aplicaes web podem se associar a uma ou mais aplicaes web. Uma
aplicao web pode utilizar vrios web services e APIs para enviar e receber
dados. Voc pode ter uma aplicao web que extraia informaes de localizao, como longitude e latitude do Twitter e do Foursquare, e post-las em
um Google Map.

Por que usar o WordPress?


Nenhuma linguagem de programao ou ferramenta de software nica ser adequada para todas as tarefas. Discutiremos o motivo pelo qual voc pode no querer
usar o WordPress em breve, mas, por enquanto, vamos apresentar algumas situaes
em que usar o WordPress para criar sua aplicao web ser uma boa opo.

Voc j est usando o WordPress


Se o WordPress j estiver sendo usado em seu site principal, voc poder estar a
um simples plugin de distncia para adicionar as funcionalidades de que precisa.
O WordPress tem timos plugins para e-commerce (Jigoshop), fruns (bbPress),
sites com adeso de usurios (Paid Memberships Pro), funcionalidades de redes
sociais (BuddyPress) e gamification3 (BadgeOS).
Criar sua aplicao em seu site WordPress j existente far voc economizar tempo
e facilitar a vida de seus usurios. Portanto, se sua aplicao for bem simples, voc
poder criar um plugin personalizado em seu site WordPress para programar a
funcionalidade de sua aplicao web.
Se voc estiver satisfeito com o WordPress usado em seu site j existente, no fique
confuso caso as pessoas digam que voc deve fazer um upgrade para algo diferente a
fim de adicionar determinadas funcionalidades ao seu site. Provavelmente, isso no
verdade. No necessrio jogar fora todo o trabalho j feito no WordPress, e tudo
o que est descrito a seguir so timos motivos para permanecer com o WordPress.
3 N.T.: Uso de estratgias e raciocnios comumente utilizados em jogos em outros contextos que no esse.

28

Criando Aplicaes Web com WordPress

fcil fazer gerenciamento de contedo com o WordPress


O WordPress foi inicialmente desenvolvido como uma plataforma de blogging,
porm, ao longo dos anos e com a introduo dos CPTs (Custom Post Types, ou
Tipos de post personalizados) na verso 3.0, ele evoluiu para um CMS (Content
Management System, ou Sistema de Gerenciamento de Contedo) totalmente
funcional. Qualquer pgina ou post pode ser editado pelos administradores por
meio do painel, que pode ser acessado pelo seu navegador web. Voc aprender
a trabalhar com CPTs no captulo 5.
O WordPress facilita a adio e a edio de contedo por meio de um editor
WYSIWYG, portanto no necessrio usar web designers sempre que voc quiser
fazer uma alterao simples em seu site. Voc tambm pode criar menus personalizados e elementos de navegao para o seu site sem alterar nenhum cdigo.
Se sua aplicao web focar em determinados contedos (por exemplo, nossa
aplicao SchoolPress foca em lies de casa e em discusses), a API Custom Post
Types para o WordPress (discutida no captulo 5) facilitar criar e administrar
facilmente esses contedos personalizados.
At mesmo as aplicaes mais orientadas a tarefas normalmente tero algumas pginas
de informaes, documentao e vendas. O uso do WordPress para a sua aplicao
possibilitar ter um local para administrar sua aplicao e todo o seu contedo.

O gerenciamento de usurios simples e seguro com o WordPress


O WordPress tem tudo de que voc precisa para adicionar tanto usurios administrativos quanto usurios finais ao seu site.
Alm de controlar o acesso ao contedo, o sistema de Roles and Capabilities
(Funes e Capacidades) do WordPress extensvel e permite controlar quais
aes esto disponveis para determinados grupos de usurios. Por exemplo, por
padro, os usurios com a funo de colaborador (contributor) podem adicionar
novos posts, porm no podem public-los. De modo semelhante, voc pode criar
novas funes e capacidades para administrar quem tem acesso s suas funcionalidades personalizadas.
Plugins como o Paid Memberships Pro podem ser usados para estender o gerenciamento de usurios j includo, a fim de permitir que voc defina membros de
nveis diferentes e controle os contedos aos quais os usurios tm acesso. Por
exemplo, voc pode criar um nvel para conceder acesso a contedos especiais
aos membros pagantes em seu site WordPress.

Captulo 1 Criando aplicaes web com o WordPress

29

Plugins
Existem mais de 27 mil plugins gratuitos no repositrio do WordPress
(http://wordpress.org/plugins/). H muito mais plugins, tanto gratuitos quanto pagos,
em diversos sites pela Internet. Se voc tiver uma ideia para fazer uma extenso
em seu site, h uma boa chance de que haver um plugin para isso, que far voc
economizar tempo e dinheiro.
Existem alguns plugins indispensveis que acabaremos usando em quase todos
os sites e nas aplicaes web que criarmos.
Na maioria dos sites que criar, voc vai querer colocar a sada em cache para uma
navegao mais rpida, usar ferramenta como o Google Analytics para monitorar
as visitas, criar mapas do site e ajustar as configuraes da pgina com vistas ao
SEO (Seach Engine Optimization, ou Otimizao para Mecanismos de Pesquisa),
juntamente com vrias outras tarefas comuns.
H muitos plugins com timos suportes para todas essas funes. Sugerimos
nossos favoritos ao longo deste livro; voc pode encontrar uma lista deles no site
do livro (http://bwawwp.com/plugins/).

Flexibilidade importante
O WordPress um framework maduro, capaz de realizar muitas tarefas. Alm do
mais, ele foi implementado com base nas tecnologias PHP, JavaScript e MySQL,
portanto tudo o que voc puder criar usando PHP/MySQL (ou seja, praticamente
qualquer coisa) pode ser facilmente encaixado em sua aplicao WordPress.
O WordPress e o PHP/MySQL em geral no so perfeitos para todas as tarefas,
porm so bastante adequados para uma ampla variedade delas. Ter uma plataforma que ir crescer juntamente com seu negcio pode permitir que voc entre
em ao rapidamente.
Por exemplo, aqui est uma progresso tpica do site de uma empresa startup
enxuta que utiliza o WordPress:
1. Anuncie sua startup por meio de um site de uma pgina.
2. Adicione um formulrio para coletar endereos de email.
3. Acrescente um blog.
4. Foque em SEO e otimize todo o contedo.
5. Envie postagens de blog para o Twitter e para o Facebook.
6. Acrescente fruns.

30

Criando Aplicaes Web com WordPress

7. Utilize o plugin Paid Memberships Pro para permitir que os clientes paguem
pelo acesso.
8. Adicione formulrios personalizados, ferramentas e recursos aplicao
para os membros pagantes.
9. Atualize a UI usando AJAX.
10. Ajuste o site e o servidor para que possam ser escalados.
11. Faa a localizao do site ou da aplicao para diferentes pases e idiomas.
12. Crie wrappers iOS e Android para a aplicao.
O aspecto interessante em relao a percorrer esse caminho que, a cada passo,
voc ter o mesmo banco de dados de usurios e estar usando a mesma plataforma de desenvolvimento.

Atualizaes de segurana frequentes


O fato de o WordPress ser usado em milhes de sites o transforma em um alvo
para hackers que tentam burlar sua segurana. Alguns desses hackers foram bemsucedidos no passado; no entanto os desenvolvedores responsveis pelo WordPress
so rpidos para cuidar das vulnerabilidades e disponibilizar atualizaes para
corrigi-las. como ter milhes de pessoas testando constantemente e corrigindo
o seu software, pois exatamente isso o que acontece.
A arquitetura subjacente do WordPress faz com que a aplicao dessas atualizaes seja um processo rpido e sem complicaes, at mesmo para os usurios
web inexperientes. Se voc for inteligente para configurar o WordPress e fazer as
atualizaes com as verses mais recentes quando elas estiverem disponveis, o
WordPress ser uma plataforma muito mais segura para o seu site do que qualquer outro software disponvel. A segurana ser discutida com mais detalhes
no captulo 8.

Custo
O WordPress gratuito. O PHP gratuito. O MySQL gratuito. A maioria dos
plugins gratuita. A hospedagem paga. Porm, conforme o tamanho de sua aplicao web e o volume de trfego obtido, esse custo pode ser relativamente baixo. Se
voc precisar de funcionalidades personalizadas que no se encontrem em nenhum
plugin existente, pode ser que seja necessrio pagar um desenvolvedor para cri-las.
Ou, se voc mesmo for um desenvolvedor, haver o custo de seu tempo.

Captulo 1 Criando aplicaes web com o WordPress

31

Vamos comparar a criao de uma aplicao web simples no WordPress com a


criao de uma aplicao web .NET simples desde o incio:

Aplicao .NET
1. IIS Pago por licena
2. Servidor SQL Pago por licena
3. Desenvolvedores .NET normalmente custam mais que desenvolvedores PHP.
4. preciso pagar para criar um esquema de banco de dados slido.
5. preciso pagar para criar funes auxiliares para transferir dados de e para
seu banco de dados.
6. preciso pagar para criar um processo de login para seus usurios.
7. preciso pagar para desenvolver qualquer funcionalidade personalizada
necessria.
8. Segurana! Voc no tem ideia de como sua aplicao se portar na Internet,
mas ir pagar para tentar torn-la o mais seguro possvel.

Aplicao WordPress
1. Apache $0
2. MySQL $0
3. Desenvolvedores PHP normalmente custam menos que desenvolvedores
.NET e so muito mais simpticos! Isso um fato.
4. O WordPress tem um esquema de banco de dados comprovado e pronto
para ser usado.
5. O WordPress tem inmeras funes auxiliares para interagir com o banco
de dados e, na maioria dos casos, voc pode utilizar CPTs e taxonomias
para armazenar e classificar seus dados sem usar muito cdigo.
6. O WordPress j tem um processo slido de login.
7. Voc pode obter a maior parte das funcionalidades necessrias a partir de
plugins gratuitos de terceiros. Se algum desenvolvimento personalizado for
necessrio, ser apenas para funcionalidades especficas que ainda no existam.
8. Segurana! O WordPress executado em aproximadamente 20% de todos os
sites da Internet. Voc pode apostar que ele uma das plataformas mais seguras que existem (no crie sua senha de administrador como password).

32

Criando Aplicaes Web com WordPress

Em suma, voc pode criar uma aplicao de qualquer tamanho com o WordPress,
e em nove entre dez vezes ela custar menos e exigir menos tempo para ser desenvolvida quando comparada a qualquer outra plataforma.

Respostas a algumas crticas comuns ao WordPress


H algumas vozes bastante crticas contra o WordPress, que afirmam que ele no
um bom framework para a criao de aplicaes web ou que o WordPress nem
mesmo chega a ser um framework. Com todo o devido respeito s pessoas que
defendem essas opinies, gostaramos de mostrar por que no concordamos com
elas. Veja a seguir algumas das crticas comuns.
O WordPress serve apenas para blogs. Muitas pessoas acreditam que, como o
WordPress foi criado inicialmente para administrar um blog, ele bom somente
para administrar blogs.

Afirmaes como essa eram verdadeiras alguns anos atrs, porm o WordPress,
desde ento, implementou uma funcionalidade robusta de CMS, tornando-o til
para outros sites focados em contedo. O WordPress atualmente o CMS mais
popular em uso, com mais de 50% de participao no mercado.4
A figura 1.1 mostra um slide da apresentao State of WordPress (Situao do
WordPress) de Matt Mullenweg, feita no WordCamp em So Francisco em 2013. A
pirmide invertida esquerda representa o WordPress aproximadamente no ano
de 2006, com a maior parte do cdigo dedicada aplicao de blog e um pouco de
cdigo de CMS e de plataforma para sustent-lo. A pirmide direita representa
a situao atual da plataforma WordPress, em que a maior parte do cdigo est
na prpria plataforma, com uma camada de CMS sobre ela e a aplicao de blog
executada sobre a camada de CMS. O WordPress uma plataforma muito mais
estvel em relao ao que era alguns anos atrs.

Blog
CMS

Plataforma

Blog

CMS

Plataforma
Figura 1.1 Diagramas da apresentao State of WordPress (Situao do WordPress) de
Matt Mullenweg em 2013. O WordPress nem sempre foi to estvel.
4 O W3Tech (http://bit.ly/w3techs) faz pesquisas frequentes sobre o uso de diferentes sistemas de
gerenciamento de contedo.

Captulo 1 Criando aplicaes web com o WordPress

33

A API Custom Post Types pode ser usada para ajustar sua instalao do WordPress
de modo a suportar outros tipos de contedo alm de postagens de blog ou pginas. Esse assunto ser discutido em detalhes no captulo 5.
O WordPress serve apenas para sites de contedo. Semelhante turma do apenas para
blogs, algumas pessoas diro que o WordPress serve somente para sites de contedo.

O WordPress a opo evidente para qualquer site relacionado a contedo. Entretanto, como veremos em detalhes neste mesmo livro, o WordPress um timo
framework para criar aplicaes web mais interativas tambm.
O principal recurso que permite ao WordPress ser usado como um framework a
API de plugins, que permite que voc se atrele ao modo de funcionamento default
do WordPress e faa alteraes. Voc no s pode usar os milhares de plugins
disponveis no repositrio do WordPress e em outros locais na Internet como
tambm pode usar a API de plugins para criar seus prprios plugins personalizados e fazer o WordPress realizar tudo o que for possvel usando PHP/MySQL.
O WordPress no escalvel. Algumas pessoas apontaro para uma instalao
default do WordPress sendo executada em um provedor de hospedagem simples,
observaro como o site se torna lento ou provoca falhas quando h muita carga
e concluiro que o WordPress no escalvel.

Podemos provar que essa afirmao falsa. O WordPress.com executa sobre o


mesmo software bsico usado em qualquer site WordPress e, na poca desta publicao, estava em algum ponto entre o 13o e o 22o site mais visitado do mundo.5
Os problemas em escalar com o WordPress so os mesmos que voc teria ao
escalar qualquer aplicao: fazer caching de pginas e de dados e tratar as chamadas ao banco de dados de forma mais rpida. Podemos aprender com o modo
pelo qual sites grandes como o WordPress.com, o TechCrunch e os blogs do
The New York Times escalaram com o WordPress. De modo semelhante, a maioria
das lies aprendidas ao escalar aplicaes PHP/MySQL em geral se aplica tambm
ao WordPress. O processo de escalar aplicaes com o WordPress ser discutido
em detalhes no captulo 16.
O WordPress no seguro. Como qualquer outro produto de cdigo aberto, h uma
contrapartida quando se trata de segurana ao usar o WordPress.

Por um lado, como o WordPress muito popular, ele ser alvo de hackers que
procuram explorar falhas de segurana. E, pelo fato de o cdigo ser aberto, ser
mais fcil descobrir essas falhas de segurana.
5 Top sites do Quantcast (http://www.quantcast.com/top-sites) e do Alexa (http://www.alexa.com/topsites).

34

Criando Aplicaes Web com WordPress

Por outro lado, como o WordPress tem cdigo aberto, voc ouvir falar dessas
falhas de segurana quando elas se tornarem pblicas e, provavelmente, haver
outra pessoa corrigindo-as para voc.
Ns nos sentimos mais seguros sabendo que h muitas pessoas por a tentando
explorar as falhas de segurana do WordPress e a mesma quantidade delas trabalhando para tornar o WordPress mais seguro contra essas exploraes de falha. No
acreditamos em segurana por meio de obscuridade, exceto como uma medida
adicional. Preferimos que as brechas de segurana em nosso software apaream
explicitamente em vez de passarem despercebidas at o pior momento possvel.
No captulo 8 discutiremos os problemas de segurana com mais detalhes, incluindo uma lista das melhores prticas para tornar sua instalao do WordPress
mais robusta e mostrando como codificar de forma segura.
Os plugins do WordPress so um lixo. A API de plugin do WordPress e os milhares de
plugins que foram desenvolvidos e que a utilizam so o segredo da receita e, em
nossa opinio, o motivo principal pelo qual o WordPress se tornou to popular
e to bem-sucedido como plataforma para sites.

Algumas pessoas diro: Concordo, h milhares de plugins, mas so todos um lixo!.


Tudo bem, alguns dos plugins existentes por a so um lixo. Porm h muitos
plugins que, definitivamente, no so lixo.
O Paid Memberships Pro, desenvolvido pelo nosso coautor Jason Coleman, no
um lixo. Usar o Paid Memberships Pro para lidar com a cobrana e a administrao
dos usurios inscritos permitir que voc foque seus esforos de desenvolvimento
na competncia principal de sua aplicao, em vez de focar em como integrar seu
site a um gateway de pagamento.
Muitos plugins realizam tarefas muito simples (por exemplo, ocultar a barra de
administrao para os que no so administradores), funcionam exatamente como
anunciado e realmente no deixam espao para serem considerados como lixo.
Mesmo os plugins ruins podem ser corrigidos, reescritos ou emprestados para que
funcionem melhor. s vezes, voc poder achar mais fcil reescrever um plugin
ruim em vez de corrigi-lo. No entanto voc ainda estar muito mais frente do
que estaria se tivesse de criar tudo por conta prpria desde o incio.
Ningum est forando voc a usar os plugins do WordPress sem que voc mesmo
os avalie. Se estiver criando uma aplicao web sria, voc mesmo ir conferir o
cdigo do plugin, corrigi-lo para que atenda aos seus padres, e prosseguir com
o desenvolvimento.

Captulo 1 Criando aplicaes web com o WordPress

35

Quando no usar o WordPress


O WordPress no a soluo para todas as aplicaes. Aqui esto alguns casos
em que voc no deve usar o WordPress para criar sua aplicao.

Voc planeja cobrar uma licena ou vender a tecnologia de seu site


O WordPress utiliza a GNU (General Public License) [Licena Pblica Geral],
verso 2 (GPLv2), que tem restries quanto ao modo de distribuir qualquer
software criado com ela. Ou seja, voc no pode restringir o que as pessoas faro
com o seu software depois que voc vend-lo ou distribu-lo.
Este um assunto complicado, porm a ideia bsica que, se voc estiver somente
vendendo ou concedendo acesso sua aplicao, no ser necessrio se preocupar
com a GPLv2. Entretanto, se voc estiver vendendo ou distribuindo o cdigo-fonte
subjacente de sua aplicao, a GPLv2 se aplicar ao cdigo-fonte distribudo.
Por exemplo, se hospedarmos o SchoolPress em nossos prprios servidores e
cobrarmos pelas contas para acessar a aplicao, isso no ser considerado distribuio e a GPLv2 no exercer nenhum impacto sobre o nosso negcio.
Contudo, se quisssemos permitir que as escolas instalassem o software para ser
executado em seus prprios servidores, teramos de compartilhar o cdigo-fonte com
elas. Isso seria considerado um ato de distribuio. Nossos clientes teriam o direito
legal de distribuir nosso cdigo-fonte gratuitamente, mesmo que os tivssemos
cobrado inicialmente pelo software. Teramos de usar a licena GPLv2, que no nos
permite restringir o que eles podem fazer com o cdigo depois de o terem baixado.

H outra plataforma que far voc chegar l mais rapidamente


Se voc tiver uma equipe de desenvolvedores experientes em Ruby, use o Ruby para
criar sua aplicao web. Se houver uma plataforma, um framework ou um pacote
que inclua 80% dos recursos necessrios para a sua aplicao web e o WordPress
no tiver nada semelhante, provavelmente voc dever usar essa outra plataforma.

A flexibilidade NO importante para voc


Um dos melhores recursos de um site WordPress sua capacidade de alterar partes de seu site para que atendam melhor s suas necessidades rapidamente. Por
exemplo, se as curtidas do Facebook pararem de resultar em trfego, voc poder
remover seu plugin de conexo com o Facebook e instalar um para o Google+.

36

Criando Aplicaes Web com WordPress

Em geral, atualizar seu tema ou trocar de plugins em um site WordPress ser mais
rpido que desenvolver recursos a partir do zero em outra plataforma.
No entanto, nos casos em que a otimizao e o desempenho forem mais importantes do que ser capaz de atualizar rapidamente a aplicao, programar uma aplicao nativa ou programar diretamente em PHP ser uma opo mais adequada.
Por exemplo, se sua aplicao for realizar uma nica tarefa simples (por exemplo,
apenas apresentar o horrio corrente), voc vai querer cri-la em um nvel mais
baixo. De modo semelhante, se voc tiver os recursos que o Facebook tem, poder
se dar o luxo de criar tudo manualmente e usar compiladores personalizados de
PHP para C para ganhar alguns milissegundos nos tempos de carga de seu site.

Sua aplicao deve ser realmente de tempo real


Uma das potenciais desvantagens do WordPress, sobre o qual falaremos mais
adiante, est no fato de ele depender da arquitetura tpica de um servidor web.
Na instalao normal do WordPress, um usurio acessa um URL, que atinge um
servidor web (como o Apache) por meio de HTTP, inicia um script PHP para gerar
a pgina e, em seguida, a pgina completa retornada ao usurio.
H maneiras de melhorar o desempenho dessa arquitetura usando tcnicas de
caching e/ou instalaes otimizadas de servidores. Voc pode tornar o WordPress
assncrono ao usar chamadas AJAX ou acessar o banco de dados por meio de
clientes alternativos. Entretanto, se sua aplicao tiver de ser de tempo real e totalmente assncrona (por exemplo, uma aplicao do tipo sala de bate-papo ou
um jogo para mltiplos jogadores), voc ter nossa bno para pensar duas vezes
antes de usar o WordPress.
Muitos desenvolvedores do WordPress, incluindo Matt Mullenweg, o criador e o
lder espiritual do WordPress, compreendem essa limitao. muito provvel que
o core (ncleo) do WordPress ser atualizado ao longo do tempo para funcionar
melhor em aplicaes assncronas de tempo real (a API Heartbeat disponibilizada
na verso 3.6 do WordPress um bom passo nessa direo), porm, no momento,
voc ir enfrentar uma batalha difcil para fazer o WordPress funcionar assincronamente com o mesmo desempenho de uma aplicao nativa ou de algo criado
com o Node.js ou outras tecnologias especificamente voltadas para aplicaes
de tempo real.

Captulo 1 Criando aplicaes web com o WordPress

37

O WordPress como um framework de aplicao


Sistemas de gerenciamento de contedo como o WordPress, o Drupal e o Joomla
com frequncia so deixados de lado em discusses sobre frameworks, porm,
na realidade, o WordPress (em particular) realmente timo para aquilo que se
supe que os frameworks devam fazer: criar aplicaes rapidamente.
Em minutos, voc pode instalar o WordPress e ter uma aplicao totalmente
funcional com inscries de usurios, gerenciamento de sesso, gerenciamento
de contedo e um painel para monitorar a atividade do site.
As diversas APIs, os objetos comuns e as funes auxiliares discutidos ao longo
deste livro possibilitaro codificar aplicaes complexas de forma rpida, sem a
necessidade de se preocupar com a integrao de sistemas de nveis mais baixos.
A figura 1.2 mostra o tringulo da direita da apresentao State of WordPress
(Situao do WordPress) de Mullengweg em 2013, representando uma plataforma WordPress estvel, com uma camada de CMS sobre ela e uma aplicao de
blogging sobre a camada de CMS.
A verdade que a maior parte da base de cdigo atual do WordPress suporta
a plataforma de aplicao subjacente. Voc pode pensar em cada verso do
WordPress como um framework de aplicao com uma aplicao de blogging
de exemplo includa.

Blog

CMS

Plataforma
Figure 1.2 A plataforma WordPress.

WordPress versus frameworks MVC


MVC quer dizer Model-View-Controller (Modelo-Viso-Controlador) e um
padro de projeto comum utilizado em muitos frameworks para desenvolvimento de software. As principais vantagens de usar uma arquitetura MVC esto na
possibilidade de reutilizao de cdigo e na separao de responsabilidades. O
WordPress no usa uma arquitetura MVC, porm, sua prpria maneira, estimula
a reutilizao de cdigo e a separao de responsabilidades.

38

Criando Aplicaes Web com WordPress

Explicarei a arquitetura MVC bem resumidamente e como ela se mapeia a um


processo de desenvolvimento WordPress. Esta seo deve ajudar os leitores familiarizados com frameworks baseados em MVC a entenderem como abordar o
desenvolvimento com o WordPress de modo semelhante.
A figura 1.3. descreve uma aplicao tpica baseada em MVC. O usurio final utiliza
um controlador (controller), que manipula o estado e os dados da aplicao por
meio de um modelo (model) que, por sua vez, atualiza uma viso (view) apresentada ao usurio. Por exemplo, em uma aplicao de blog, um usurio poder estar
vendo a pgina de postagens mais recentes (uma viso). O usurio clica no ttulo
de uma postagem, o que o direcionar para um novo URL (um controlador), o
qual carregar os dados da postagem (em um modelo) e a postagem nica ser
exibida (outra viso).
MODELO
Atualiza

Manipula

VISO

CONTROLADOR

Usa
USURIO

Figura 1.3 Como funciona o MVC.

A arquitetura MVC suporta a reutilizao de cdigo ao permitir que os modelos,


as vises e os controladores interajam. Por exemplo, tanto a viso das postagens
recentes quanto de postagens nicas podem usar o mesmo modelo ao exibir os
dados das postagens. Os mesmos modelos podem ser usados no frontend para
exibir as postagens e no backend para alter-las.
A arquitetura MVC suporta a separao de responsabilidades ao permitir que
os designers foquem sua ateno nas vises, enquanto os programadores focam
nos modelos.
Voc pode tentar usar uma arquitetura MVC no WordPress. H diversos projetos
para ajudar voc a fazer exatamente isso; no entanto achamos que tentar amarrar
o MVC no WordPress pode resultar em problemas, a menos que o ncleo do
WordPress passe a suportar oficialmente o MVC. Em vez de fazer isso, sugerimos
seguir o Modo WordPress, conforme apresentado neste livro.
Mas se voc estiver interessado...

Captulo 1 Criando aplicaes web com o WordPress

39

Plugins MVC para o WordPress


WP MVC (http://bit.ly/wp-mvc)
Churro (http://bit.ly/churro-plugin)
Tina MVC (http://bit.ly/tina-mvc)
H algumas maneiras de mapear um processo MVC ao WordPress.

Modelos = plugins
Em um framework MVC, o cdigo que armazena as estruturas de dados subjacentes e a lgica do negcio encontra-se nos modelos. nesse local que os
programadores gastaro a maior parte de seu tempo.
No WordPress, os plugins so os locais apropriados para armazenar novas estruturas de dados, lgicas de negcio complexas e definies de tipos de post
personalizados.
Essa comparao no se sustenta de acordo com alguns aspectos. Em primeiro
lugar, muitos plugins adicionam funcionalidades semelhantes s de viso e contm
elementos de design. Tome qualquer plugin que adicione um widget a ser usado
em suas pginas. Em segundo lugar, os formulrios e outros componentes de
design usados no painel do WordPress em geral so tratados tambm por plugins.
Uma maneira de fazer a separao das responsabilidades de forma mais clara
ao adicionar componentes associados viso aos seus plugins do WordPress
consiste em criar uma pasta templates ou pages e colocar a o seu cdigo
de frontend. Uma prtica comum consiste em permitir que os templates sobrescrevam o template usado pelo plugin. Por exemplo, ao usar o WordPress
com o plugin Paid Memberships Pro, voc pode colocar uma pasta chamada
paid-memberships-pro/pages em seu tema ativo para sobrescrever os templates
default da pgina.6

Vises = temas
Em um framework MVC, o cdigo para exibir os dados ao usurio est implementado nas vises. nesse local que os designers gastaro a maior parte de seu tempo.
No WordPress, os temas so os locais apropriados para armazenar o cdigo e a
lgica dos templates.
Novamente, a comparao aqui no tem um mapeamento de um para um, porm
vises = temas um bom ponto de partida.
6 Essa tcnica para sobrescrever os templates do plugin ser discutida no captulo 4.

40

Criando Aplicaes Web com WordPress

Controladores = carregador de templates


Em um framework MVC, o cdigo para processar os dados de entrada dos usurios
(na forma de URLs ou dos dados de $_GET ou $_POST) e decidir quais modelos e vises
devem ser usados para cuidar de uma solicitao est contido nos controladores.
O cdigo do controlador normalmente tratado por um programador e, com
frequncia, criado uma s vez e esquecido. A parte principal da programao
em uma aplicao MVC est nos modelos e nas vises.
No WordPress, todas as solicitaes de pgina (a menos que elas estejam acessando
um arquivo .html em cache) so processadas por meio do arquivo index.php e so
processadas pelo WordPress de acordo com a Hierarquia dos Templates (Template
Hierarchy). O carregador de templates descobre qual arquivo de template deve
ser usado para exibir a pgina ao usurio final. Por exemplo, utilize search.php
para mostrar resultados de pesquisa, single.php para mostrar um nico post etc.
O comportamento-padro pode ser personalizado por meio da API WP_Rewrite
(discutida no captulo 7) e de outros hooks (ganchos) e filtros.
Informaes do Codex sobre a Hierarquia de Templates (http://bit.ly/temp-hier) est
disponvel online; a Hierarquia de Templates ser discutida com mais detalhes
no captulo 4.
Para compreender melhor o funcionamento dos frameworks MVC, o framework
PHP Yii (http://bit.ly/yii-guide) tem um timo recurso que explica como utilizar
sua arquitetura MVC da melhor maneira possvel.
Para entender melhor como desenvolver aplicaes web usando o WordPress
como um framework, continue lendo este livro.

A anatomia de uma aplicao WordPress


Nesta seo, descreveremos a aplicao que criamos para acompanhar este livro:
o SchoolPress. Discutiremos a funcionalidade pretendida para o SchoolPress,
veremos como ele funciona e quem ir us-lo e o mais importante para este
livro como cada parte da aplicao ser criada no WordPress.
No se assuste caso voc no entenda algumas das terminologias a seguir. Nos
captulos posteriores, discutiremos com mais detalhes tudo o que est sendo
apresentado aqui. Sempre que possvel, indicaremos o captulo deste livro que
corresponde ao recurso sendo discutido.

Captulo 1 Criando aplicaes web com o WordPress

41

O que o SchoolPress?
O SchoolPress uma aplicao web que facilita aos professores interagir com
seus alunos fora da sala de aula. Os professores podem criar classes e convidar
seus alunos para participarem delas. Cada classe tem um frum para discusses
ad hoc, alm de um sistema mais estruturado para os professores postarem lies
de casa (assignments) e os alunos entregarem suas tarefas.
A aplicao funcional pode ser encontrada no site do SchoolPress ( http://
schoolpress.me). O cdigo-fonte do SchoolPress est disponvel no GitHub
(https://github.com/bwawwp/schoolpress).

O SchoolPress executa em uma rede WordPress Multisite


O SchoolPress executa uma verso multisite do WordPress. O site principal em
schoolpress.me hospeda contas gratuitas, em que os professores podem se inscrever e comear a administrar suas classes. O site tambm tem todas as informaes
de marketing para ter sites separados de escolas na rede, incluindo a pgina para
inscrio e checkout para um nvel de adeso pago.
As escolas podem pagar uma taxa anual para criar um subdomnio exclusivo para
suas escolas, por exemplo, yourschool.schoolpress.me, que ir hospedar classes para
seus professores e oferecer um controle mais detalhado, alm de relatrios, para
todas as classes de toda a escola. Os detalhes sobre o uso de uma rede multisite
com o WordPress podem ser encontrados no captulo 13.

O modelo de negcios do SchoolPress


O SchoolPress utiliza os plugins Paid Memberships Pro, PMPro Register Helper e
PMPro Network para personalizar o processo de inscrio e aceitar pagamentos
com carto de crdito para as escolas se registrarem.
As escolas podem comprar um subdomnio exclusivo para elas mediante uma
taxa anual. Nenhum outro usurio do SchoolPress paga pelo acesso.
Ao se inscreverem, os administradores das escolas podem especificar o nome
da escola e um slug para o seu subdomnio (myschool.schoolpress.me). Um novo site
na rede ser criado e eles tero acesso a uma verso simplificada do painel do
WordPress para o seu site.
O administrador da escola ento convida os professores para entrarem no sistema.
Os professores tambm podem solicitar um convite para uma escola, que deve
ser aprovado pelo administrador da escola.

42

Criando Aplicaes Web com WordPress

Os professores podem convidar os alunos para as classes que eles criarem. Os


alunos tambm podem solicitar um convite para uma classe, que deve ser aprovado pelo professor.
Os professores tambm podem se inscrever gratuitamente para hospedar suas
classes em schoolpress.me. As pginas hospedadas nesse subdomnio podem apresentar propagandas e outros esquemas para monetizao. Os detalhes de como
configurar o e-commerce com o WordPress podem ser encontrados no captulo 15.

Nveis de adeso e funes de usurios


Os professores recebem um nvel de adeso igual a Teacher (por meio do Paid
Memberships Pro) e uma funo (role) personalizada chamada Teacher que
lhes d acesso para criar e alterar suas classes, moderar discusses nos fruns de
suas classes e criar e administrar lies de casa para suas classes.
Os professores no tm acesso ao painel do WordPress. Eles criam e administram
suas classes e as lies de casa por meio de formulrios no frontend, criados com
esse propsito.
Os alunos recebem um nvel de adeso igual a Student e a funo default
Subscriber no WordPress. Os alunos tm acesso somente para visualizar e participar das classes s quais forem convidados pelos seus professores. Os detalhes
sobre as funes e capacidades dos usurios podem ser encontrados no captulo
6. Os detalhes sobre o uso dos nveis de adeso para controlar o acesso podem
ser encontrados no captulo 15.

As classes so grupos BuddyPress


Quando os professores criam classes, na realidade, eles esto criando grupos
BuddyPress e convidando seus alunos para o grupo. Ao usar o BuddyPress, temos
fruns para a classe, um sistema de mensagens privadas e uma boa maneira de
organizar nossos usurios.
Os fruns de discusso das classes utilizam o plugin bbPress. Um novo frum
criado para cada classe, e o BuddyPress administra o acesso aos fruns. Os
detalhes sobre como tirar proveito de plugins de terceiros, como o BuddyPress e
o bbPress, podem ser encontrados no captulo 3.

Captulo 1 Criando aplicaes web com o WordPress

43

As lies de casa so um tipo de post personalizado


As lies de casa (assignments) so um CPT (Custom Post Type, ou Tipo de post
personalizado), com um formulrio de submisso no frontend para que os professores possam postar novas lies de casa. As lies de casa so como as postagens
default de blogs no WordPress, com um ttulo, um contedo e arquivos anexos.
O professor que posta a lio de casa o autor do post.
O WordPress tem tipos de post prontos, como posts e pginas, alm
de taxonomias prontas, como categorias e tags. Para o SchoolPress,
estamos criando nossos prprios CPTs e taxonomias. Os detalhes sobre
a criao de CPTs e taxonomias podem ser encontrados no captulo 5.

As submisses so um (sub) CPT das lies de casa


Os alunos podem postar comentrios sobre uma lio de casa e podem tambm
optar por postar sua submisso oficial para a lio de casa por meio de outro
formulrio do frontend.
As submisses, assim como as lies de casa, tambm so CPTs. As submisses
esto ligadas s lies de casa ao definir o campo post_parent da submisso com o
ID da lio de casa qual a submisso foi feita. Os alunos podem postar contedo
textual, alm de adicionar um ou mais anexos a uma submisso.

Os semestres so uma taxonomia do CPT classe


Uma taxonomia personalizada chamada Semester (Semestre) criada para o
CPT grupo/classe. Os administradores das escolas podem adicionar novos semestres a seus sites. Por exemplo, um semestre fall 2013 (outono de 2013) pode ser
criado e os professores podem atribuir esse semestre ao criar suas classes. Ento
os alunos podem ver facilmente uma lista de todas as classes do outono de 2013
e navegar por elas.

Os departamentos so uma taxonomia do CPT classe


Uma taxonomia personalizada chamada Department (Departamento) tambm
criada para o CPT grupo/classe. Ela tambm est disponvel na forma de uma
lista suspensa para os professores quando eles criam suas classes e possibilita
obter uma lista de classes por departamento pela qual possvel navegar.

44

Criando Aplicaes Web com WordPress

O SchoolPress tem um plugin personalizado principal


Internamente, as partes personalizadas da aplicao SchoolPress so controladas
a partir de um nico plugin personalizado chamado SchoolPress. Esse plugin
que o principal inclui as definies dos vrios tipos de post personalizados, as
taxonomias e as funes dos usurios. Ele tambm contm o cdigo para ajustar
os plugins de terceiros utilizados pelo SchoolPress, como o Paid Memberships Pro
e o BuddyPress.
O plugin principal tambm contm as classes para os administradores das escolas,
os professores e os alunos, que estendem a classe WP_User, alm de classes para as
classes, as lies de casa e as submisses, que encapsulam a classe WP_Post. Essas
classes (PHP) permitem organizar nosso cdigo de forma orientada a objetos, o
que facilita controlar como nossas vrias personalizaes funcionam em conjunto,
alm de facilitar estender o nosso cdigo no futuro. divertido trabalhar com
essas classes, e elas possibilitam ter o cdigo que voc v no exemplo 1.1.

Exemplo 1.1 Eventos possveis no login de usurio


if($class->isTeacher($current_user)) {
// um professor, mostra dados pertinentes aos professores
//...
}
elseif($class->isStudent($current_user)) {
// um aluno, mostra dados pertinentes aos alunos
//...
}
elseif(is_user_logged_in()) {
// no est logado, envia-o para o formulrio de login com um redirecionamento de
// volta para c
wp_redirect(wp_login_url(get_permalink($class->ID)));
exit;
}
else {
// no membro desta classe, redireciona-o para a pgina de convite
wp_redirect($class->invite_url);
exit;
}

A criao de plugins personalizados ser discutida no captulo 3. A extenso da


classe WP_User ser discutida no captulo 6.

Captulo 1 Criando aplicaes web com o WordPress

45

O SchoolPress usa outros plugins personalizados


Ocasionalmente, um pouco de cdigo ser desenvolvido para uma aplicao em
particular, que tambm ser til em outros projetos. Se o cdigo puder ser contido
o suficiente para que possa executar fora do contexto da aplicao corrente e do
plugin principal, ele poder ser criado de modo a compor um plugin separado
e personalizado.
Um exemplo disso pode ser o plugin force-first-name-last-name, que foi um requisito deste projeto. Ele no exigiu nenhuma parte do cdigo do plugin principal
para ser executado e pode ser til em outros sites WordPress fora do contexto da
aplicao SchoolPress.

O SchoolPress usa o framework de temas StartBox


O site principal schoolpress.me executa com um tema-filho personalizado do
StartBox. Se uma escola se inscreve para ter um subdomnio especial, ela poder
escolher entre uma variedade de temas filhos do StartBox; ela tambm poder
alterar qualquer cor, fonte e logo do tema para que se tornem mais adequados
sua marca.
Todos os temas usam um design responsivo que garante que o site ter uma boa
aparncia em displays mveis e em tablets, bem como em displays desktop.
O cdigo do tema do StartBox (http://wpstartbox.com) estritamente limitado
programao relacionada a display. O cdigo do tema obviamente inclui o HTML e
o CSS para o layout do site, mas contm tambm um pouco de lgica simples que
se integra ao plugin principal do SchoolPress (como o cdigo do plugin adicional
anterior). No entanto qualquer poro de cdigo que manipule os tipos de post
personalizados ou as funes dos usurios ou que envolva muito processamento
ser de responsabilidade do plugin SchoolPress.

Potrebbero piacerti anche