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.
Tradução em português autorizada da edição em inglês da obra Building Web Apps with Wordpress, ISBN
9781449364076 © 2014 Brian Messenlehner, Jason Coleman Esta tradução é publicada e vendida com
a permissão da O'Reilly Media, Inc., detentora de todos os direitos para publicação e venda desta obra.
© Novatec Editora Ltda. 2014.
Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta
obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora.
Editor: Rubens Prates
Tradução: Lúcia A. Kinoshita
Revisão gramatical: Marta Almeida de Sá
Editoração eletrônica: Carolina Kuwabata
ISBN: 978-85-7522-377-2 IG20141008
Histórico de impressões:
Outubro/2014
Primeira edição
Novatec Editora Ltda.
Rua Luís Antônio dos Santos 110
02460-000 – São Paulo, SP – Brasil
Tel.: +55 11 2959-6529
Email: [email protected]
Site: www.novatec.com.br
Twitter: twitter.com/novateceditora
Facebook: facebook.com/novatec
LinkedIn: linkedin.com/in/novatec
Sumário
Prefácio..................................................................................................................................17
Apresentação..........................................................................................................................23
Capítulo 1 ■ Criando aplicações web com o WordPress..............................................................24
O que é um site?..................................................................................................... 24
O que é uma aplicação?........................................................................................... 24
O que é uma aplicação web?.................................................................................... 25
Características de uma aplicação web................................................................. 25
Por que usar o WordPress?....................................................................................... 27
Você já está usando o WordPress........................................................................ 27
É fácil fazer gerenciamento de conteúdo com o WordPress................................... 28
O gerenciamento de usuários é simples e seguro com o WordPress....................... 28
Plugins.............................................................................................................. 29
Flexibilidade é importante................................................................................. 29
Atualizações de segurança frequentes................................................................. 30
Custo................................................................................................................ 30
Aplicação .NET..................................................................................................31
Aplicação WordPress...........................................................................................31
Respostas a algumas críticas comuns ao WordPress............................................. 32
Quando não usar o WordPress................................................................................. 35
Você planeja cobrar uma licença ou vender a tecnologia de seu site...................... 35
Há outra plataforma que fará você “chegar lá” mais rapidamente.......................... 35
A flexibilidade NÃO é importante para você....................................................... 35
Sua aplicação deve ser realmente de tempo real................................................... 36
O WordPress como um framework de aplicação....................................................... 37
WordPress versus frameworks MVC................................................................... 37
A anatomia de uma aplicação WordPress.................................................................. 40
O que é o SchoolPress?.......................................................................................41
O SchoolPress executa em uma rede WordPress Multisite.....................................41
O modelo de negócios do SchoolPress.................................................................41
Níveis de adesão e funções de usuários............................................................... 42
As classes são grupos BuddyPress....................................................................... 42
5
6
Criando Aplicações Web com WordPress
As lições de casa são um tipo de post personalizado............................................ 43
As submissões são um (sub) CPT das lições de casa............................................ 43
Os semestres são uma taxonomia do CPT classe................................................. 43
Os departamentos são uma taxonomia do CPT classe......................................... 43
O SchoolPress tem um plugin personalizado principal........................................ 44
O SchoolPress usa outros plugins personalizados................................................ 45
O SchoolPress usa o framework de temas StartBox.............................................. 45
Capítulo 2 ■ Básico do WordPress.............................................................................................46
A estrutura de diretórios do WordPress.................................................................... 47
Diretório-raiz.................................................................................................... 47
/wp-admin........................................................................................................ 47
/wp-includes...................................................................................................... 47
/wp-content....................................................................................................... 47
Estrutura de banco de dados do WordPress.............................................................. 48
wp_options....................................................................................................... 49
Funções que se encontram em /wp-includes/option.php...................................... 49
wp_users............................................................................................................52
Funções que se encontram em /wp-includes/…....................................................52
wp_usermeta..................................................................................................... 56
wp_posts............................................................................................................61
Funções que se encontram em /wp-includes/post.php......................................... 62
wp_postmeta..................................................................................................... 65
Funções que se encontram em /wp-includes/post.php......................................... 66
wp_comments................................................................................................... 70
Funções que se encontram em /wp-includes/comment.php................................. 70
Funções que se encontram em /wp-includes/comment.php................................. 76
wp_links........................................................................................................... 79
wp_terms.......................................................................................................... 80
Funções que se encontram em /wp-includes/taxonomy.php................................. 80
wp_term_taxonomy........................................................................................... 83
Funções que se encontram em /wp-includes/taxonomy.php................................. 83
wp_term_relationships...................................................................................... 84
Estendendo o WordPress......................................................................................... 86
Capítulo 3 ■ Tirando proveito dos plugins do WordPress...........................................................87
A licença GPLv2...................................................................................................... 88
Instalando plugins WordPress.................................................................................. 89
Criando seu próprio plugin..................................................................................... 90
Estrutura de arquivos do plugin de uma aplicação....................................................91
/adminpages/..................................................................................................... 92
/classes/............................................................................................................. 92
Sumário
7
/css/.................................................................................................................. 92
/js/94
/images/............................................................................................................ 95
/includes/.......................................................................................................... 95
/includes/lib/..................................................................................................... 95
/pages/.............................................................................................................. 95
/services/........................................................................................................... 97
/scheduled/....................................................................................................... 97
/schoolpress.php................................................................................................ 97
Add-ons para plugins existentes............................................................................... 98
Casos de uso e exemplos......................................................................................... 98
O laço do WordPress.......................................................................................... 99
Variáveis globais do WordPress..........................................................................100
Hooks de ações..................................................................................................111
Filtros............................................................................................................... 112
Plugins gratuitos.................................................................................................... 113
All in One SEO Pack......................................................................................... 113
BadgeOS.......................................................................................................... 114
Custom Post Type UI........................................................................................ 114
Posts 2 Posts..................................................................................................... 114
Members.......................................................................................................... 115
W3 Total Cache................................................................................................ 116
Plugins premium................................................................................................... 116
Gravity Forms.................................................................................................. 116
Backup Buddy.................................................................................................. 116
WP All Import.................................................................................................. 117
Plugins de comunidade.......................................................................................... 117
BuddyPress....................................................................................................... 117
Tabelas do banco de dados................................................................................ 119
Capítulo 4 ■ Temas................................................................................................................131
Temas versus plugins.............................................................................................. 131
Quando desenvolver aplicações......................................................................... 131
Quando desenvolver plugins.............................................................................133
Quando desenvolver temas................................................................................133
A hierarquia de templates.......................................................................................134
Templates de página...............................................................................................136
Exemplo de template de página.........................................................................136
Usando hooks para copiar templates..................................................................139
Quando usar um template de tema.................................................................... 141
Funções WP relacionadas a temas........................................................................... 141
Usando locate_template em seus plugins...........................................................143
Style.css.................................................................................................................144
8
Criando Aplicações Web com WordPress
Atribuindo versões aos arquivos CSS de seu tema............................................... 145
Functions.php........................................................................................................ 147
Temas e tipos de post personalizados...................................................................... 147
Frameworks populares de temas ............................................................................148
Frameworks de temas para o WordPress.............................................................148
Frameworks de temas não exclusivos do WordPress............................................150
Criando um tema-filho para o StartBox..................................................................150
Incluindo o Bootstrap no tema de sua aplicação...................................................... 151
Menus...................................................................................................................153
Menus de navegação.........................................................................................153
Menus dinâmicos.............................................................................................154
Design responsivo..................................................................................................155
Detecção de dispositivo e de display no CSS.......................................................155
Detecção de dispositivos e de recursos no JavaScript...........................................157
Detecção de dispositivos no PHP.......................................................................160
Observação final sobre detecção de navegadores.................................................164
Atribuindo versões aos arquivos CSS e JS................................................................165
Capítulo 5 ■ Tipos de post personalizados, metadados de post e taxonomias...........................167
Tipos de post default e tipos de post personalizados................................................167
Página (page)....................................................................................................167
Post..................................................................................................................167
Anexo (attachment)..........................................................................................168
Revisões (revisions)...........................................................................................168
Item de menu de navegação (nav menu item).....................................................168
Definindo e registrando tipos de post personalizados..............................................168
register_post_type( $post_type, $args );.............................................................169
O que é uma taxonomia e como devo usá-la?..........................................................179
Taxonomias versus metadados de post...............................................................179
Criando taxonomias personalizadas..................................................................182
register_taxonomy_for_object_type( $taxonomy, $object_type ).........................186
Usando tipos de post personalizados e taxonomias em seus temas e plugins............187
Os arquivos de template Archive e Single do tema..............................................187
Os bons e velhos WP_Query e get_posts().........................................................188
Metadados com CPTs.............................................................................................192
add_meta_box( $id, $title, $callback, $screen, $context, $priority, $callback_args )...
192
Classes wrapper personalizadas para CPTs..............................................................195
Estender WP_Post versus encapsulá-la...............................................................198
Por que usar classes wrapper?............................................................................198
Mantenha seus CPTs e as taxonomias juntos......................................................199
Mantenha tudo na classe wrapper.................................................................... 200
As classes wrapper são mais legíveis...................................................................202
Sumário
9
Capítulo 6 ■ Usuários, funções e capacidades.........................................................................204
Obtendo dados de usuário.................................................................................... 205
Adicionar, atualizar e apagar usuários.................................................................... 208
Hooks e filtros........................................................................................................211
O que são funções e capacidades?........................................................................... 212
Verificando a função e as capacidades de um usuário......................................... 213
Criando funções e capacidades personalizadas................................................... 215
Estendendo a classe WP_User ............................................................................... 217
Adicionando campos para inscrição e perfil............................................................ 219
Personalizando a tabela de usuários no painel.........................................................225
Plugins..................................................................................................................227
Theme My Login..............................................................................................227
Hide Admin Bar from Non-Admins...................................................................227
Paid Memberships Pro..................................................................................... 228
PMPro Register Helper..................................................................................... 228
Members......................................................................................................... 229
Capítulo 7 ■ Outras APIs, objetos e funções auxiliares do WordPress........................................230
API Shortcode........................................................................................................230
Atributos de shortcode...................................................................................... 231
Shortcodes aninhados.......................................................................................232
Removendo shortcodes.....................................................................................233
Outras funções úteis relacionadas a shortcodes..................................................234
API Widgets...........................................................................................................234
Antes de adicionar o seu próprio widget............................................................235
Adicionando widgets........................................................................................236
Definindo uma área de widget...........................................................................240
Inserindo um widget fora de uma barra lateral dinâmica....................................243
API Dashboard Widgets........................................................................................ 244
Removendo widgets do painel.......................................................................... 244
Adicionando seu próprio widget de painel........................................................ 246
API Settings...........................................................................................................249
Você realmente precisa de uma página de configurações?....................................250
É possível usar um hook ou um filtro como alternativa?...................................... 251
Utilize padrões ao adicionar configurações.........................................................252
Ignore padrões ao adicionar configurações.........................................................253
API Rewrite...........................................................................................................254
Adicionando regras de reescrita.........................................................................255
Limpando as regras de reescrita........................................................................ 256
Outras funções de reescrita...............................................................................257
WP-Cron.............................................................................................................. 260
Adicionando intervalos de tempo personalizados............................................... 261
10
Criando Aplicações Web com WordPress
Agendando eventos únicos................................................................................262
Disparando cron jobs a partir do servidor......................................................... 263
Usando somente crons do servidor................................................................... 264
WP Mail............................................................................................................... 265
Enviando emails mais elegantes com o WordPress............................................. 266
API File Header..................................................................................................... 268
Adicionando cabeçalhos aos seus próprios arquivos...........................................270
Adicionando novos cabeçalhos a plugins e temas............................................... 271
Capítulo 8 ■ Segurança no WordPress.....................................................................................273
Por que a segurança é importante...........................................................................273
Básico sobre a segurança........................................................................................274
Faça atualizações com frequência......................................................................274
Não utilize o nome de usuário “admin”..............................................................274
Utilize uma senha robusta.................................................................................275
Exemplos de senhas ruins.................................................................................275
Exemplos de senhas boas..................................................................................276
Tornando sua instalação do WordPress mais robusta...............................................276
Não permita que os administradores editem plugins ou temas...........................276
Altere o prefixo default das tabelas do banco de dados...................................... 277
Mova wp-config.php para outro local................................................................278
Oculte mensagens de erro de login....................................................................279
Oculte a versão de seu WordPress......................................................................279
Não permita logins por meio de wp-login.php...................................................279
Adicione regras .htaccess personalizadas para bloquear wp-admin..................... 281
Faça backup de tudo!............................................................................................ 282
Scan scan scan!..................................................................................................... 282
Plugins de segurança úteis..................................................................................... 283
Plugins para bloquear spams............................................................................ 283
Plugins para backup........................................................................................ 283
Plugins scanners.............................................................................................. 284
Plugins para proteção de login e de senha......................................................... 285
Implementando códigos seguros............................................................................ 286
Verificação das capacidades dos usuários.......................................................... 286
Instruções SQL personalizadas......................................................................... 287
Validação de dados, sanitização e escaping........................................................ 288
Nonces............................................................................................................ 292
Capítulo 9 ■ JavaScript, jQuery e AJAX....................................................................................299
O que é AJAX?...................................................................................................... 299
O que é JSON?..................................................................................................... 299
A jQuery e o WordPress......................................................................................... 300
Sumário
11
Enfileirando outras bibliotecas JavaScript......................................................... 300
Onde colocar o seu JavaScript personalizado.....................................................302
Chamadas AJAX com o WordPress e a jQuery........................................................ 303
Administrando várias solicitações AJAX................................................................ 308
API Heartbeat........................................................................................................ 310
Inicialização......................................................................................................311
JavaScript do lado do cliente..............................................................................311
PHP do lado do servidor................................................................................... 313
Inicialização..................................................................................................... 313
JavaScript do lado do cliente............................................................................. 314
PHP do lado do servidor................................................................................... 315
Limitações do WordPress para processamento assíncrono........................................ 316
Backbone.js........................................................................................................... 317
Capítulo 10 ■ XML-RPC...........................................................................................................320
wp.getUsersBlogs................................................................................................... 321
wp.getPosts............................................................................................................ 321
wp.getPost.............................................................................................................323
wp.newPost...........................................................................................................324
wp.editPost............................................................................................................325
wp.deletePost.........................................................................................................326
wp.getTerms..........................................................................................................327
wp.getTerm............................................................................................................328
wp.newTerm..........................................................................................................329
wp.editTerm...........................................................................................................329
wp.deleteTerm.......................................................................................................329
wp.getTaxonomies..................................................................................................330
wp.getTaxonomy....................................................................................................330
wp.getUsers........................................................................................................... 331
wp.getUser.............................................................................................................332
wp.getProfile..........................................................................................................333
wp.editProfile.........................................................................................................333
wp.getCommentCount...........................................................................................333
wp.getPageTemplates..............................................................................................334
wp.getOptions.......................................................................................................334
wp.setOptions........................................................................................................335
wp.getComment....................................................................................................336
wp.getComments...................................................................................................336
wp.deleteComment................................................................................................337
wp.editComment...................................................................................................337
wp.newComment..................................................................................................338
wp.getMediaLibrary...............................................................................................338
wp.getMediaItem...................................................................................................339
12
Criando Aplicações Web com WordPress
wp.uploadFile....................................................................................................... 340
wp.getPostFormats................................................................................................. 341
wp.getPostType...................................................................................................... 341
wp.getPostTypes.....................................................................................................342
Capítulo 11 ■ Aplicativos móveis com o WordPress..................................................................343
Wrapper de aplicação.............................................................................................343
Aplicativos iOS......................................................................................................343
Cadastrando-se como um desenvolvedor Apple................................................. 344
Criando o seu aplicativo com o Xcode...............................................................345
Distribuição de aplicativos................................................................................349
Recursos para o iOS..........................................................................................350
Aplicativos para Android........................................................................................350
AndroidManifest.xml....................................................................................... 351
activity_main.xml.............................................................................................352
Criando um arquivo APK..................................................................................354
Disponibilizando o seu aplicativo no Google Play..............................................354
Recursos para o Android...................................................................................355
Estenda o seu aplicativo.........................................................................................355
AppPresser.............................................................................................................355
Casos de uso para aplicativos móveis......................................................................356
Capítulo 12 ■ Bibliotecas PHP, APIs externas e web services....................................................358
Imagick.................................................................................................................359
MaxMind GeoIP....................................................................................................359
API JavaScript v3 do Google Maps..........................................................................362
Directions.........................................................................................................362
Distance Matrix............................................................................................... 363
Elevation......................................................................................................... 363
Geocoding....................................................................................................... 363
Street View Service........................................................................................... 363
Aplicação prática............................................................................................. 363
Google Translate....................................................................................................367
Google+............................................................................................................... 368
People (Pessoas)............................................................................................... 368
Activities (atividades)....................................................................................... 368
Comments (comentários)................................................................................. 368
Moments (momentos)...................................................................................... 369
API Product Advertising da Amazon...................................................................... 369
Parâmetros para a solicitação............................................................................370
Operações........................................................................................................370
Grupos de resposta...........................................................................................372
Sumário
13
API REST v1.1 do Twitter........................................................................................373
Criando a sua aplicação no Twitter.com.............................................................375
Tirando proveito de uma biblioteca PHP............................................................375
Facebook...............................................................................................................377
Imagens............................................................................................................377
Pesquisa...........................................................................................................378
Permissões........................................................................................................378
Criando uma aplicação.....................................................................................379
Tirando proveito do que existe por aí.................................................................379
Twilio................................................................................................................... 380
Microsoft Sharepoint............................................................................................ 380
Deixamos alguns web services de lado................................................................... 384
Capítulo 13 ■ Criando redes WordPress Multisite....................................................................385
Por que multisite?................................................................................................. 385
Criando uma rede Multisite................................................................................... 386
Administrando uma rede Multisite........................................................................ 388
Dashboard (Painel).......................................................................................... 388
Sites................................................................................................................ 389
Users (Usuários).............................................................................................. 389
Themes (Temas).............................................................................................. 390
Plugins............................................................................................................ 390
Configurações.................................................................................................. 391
Updates (Atualizações)......................................................................................392
Estrutura do banco de dados Multisite...................................................................392
Tabelas válidas para toda a rede.........................................................................392
Tabelas para sites individuais.............................................................................395
Tabelas compartilhadas entre sites.....................................................................395
Plugins Multisite................................................................................................... 396
WordPress MU Domain Mapping.................................................................... 396
Blog Copier..................................................................................................... 396
More Privacy Options.......................................................................................397
Multisite Global Search.....................................................................................397
Multisite Robots.txt Manager............................................................................397
Funcionalidades básicas de Multisite......................................................................397
$blog_id...........................................................................................................397
is_multisite()....................................................................................................398
get_current_blog_id().......................................................................................398
switch_to_blog( $new_blog )............................................................................399
restore_current_blog()......................................................................................399
get_blog_details( $fields = null, $get_all = true )............................................... 400
update_blog_details( $blog_id, $details = array() )............................................ 401
get_blog_status( $id, $pref )............................................................................. 402
14
Criando Aplicações Web com WordPress
update_blog_status( $blog_id, $pref, $value )................................................... 402
get_blog_option( $id, $option, $default = false )............................................... 403
update_blog_option( $id, $option, $value )....................................................... 403
delete_blog_option( $id, $option ).................................................................... 404
get_blog_post( $blog_id, $post_id )................................................................. 404
add_user_to_blog( $blog_id, $user_id, $role ).................................................. 405
create_empty_blog( $domain, $path, $weblog_title, $site_id = 1 )...................... 405
Funções que não mencionamos........................................................................ 406
Capítulo 14 ■ Localização de aplicações WordPress.................................................................407
É mesmo necessário fazer a localização de sua aplicação?........................................ 407
Como é feita a localização no WordPress................................................................ 408
Definindo a sua localidade no WordPress............................................................... 409
Preparando suas strings com as funções de tradução.............................................. 409
_ _($text, $domain = “default”)......................................................................... 409
_e($text, $domain = “default”).......................................................................... 410
_x($text, $context, $domain = “default”)........................................................... 410
_ex($title, $context, $domain = “default”)...........................................................411
Escapando e traduzindo ao mesmo tempo..........................................................411
Criando e carregando arquivos de tradução............................................................ 412
Nossa estrutura de arquivos para efetuar a localização....................................... 413
Gerando um arquivo .pot.................................................................................. 414
Criando um arquivo .po.................................................................................... 416
Criando um arquivo .mo................................................................................... 416
Carregando o textdomain.................................................................................. 416
Localizando recursos que não são strings................................................................ 418
Capítulo 15 ■ E-commerce.....................................................................................................421
Selecionando um plugin......................................................................................... 421
Plugins para carrinho de compras..................................................................... 421
Plugins para adesão de membros.......................................................................423
Downloads digitais...........................................................................................424
Gateways de pagamento.........................................................................................424
Contas de comerciante...........................................................................................425
Certificados SSL e HTTPS......................................................................................427
Instalando um certificado SSL em seu servidor...................................................427
SSL com o Paid Memberships Pro..................................................................... 429
O SSL com o Jigoshop...................................................................................... 430
Login e painel de administração do WordPress por meio de SSL........................ 430
Frontend do WordPress por meio de SSL............................................................ 431
SSL em páginas selecionadas.............................................................................433
Evitando erros de SSL com a “Nuclear Option”...................................................437
Sumário
15
Criando um SaaS (Software as a service) com o Paid Memberships Pro....................439
O modelo de Software como serviço.......................................................................439
Passo 0: Determine o modo pelo qual você deseja cobrar pela sua aplicação....... 440
Passo 1: Instale e ative o Paid Memberships Pro................................................ 440
Passo 2: Configure o nível.................................................................................441
Passo 3: Crie as páginas................................................................................... 442
Passo 4: Configurações de pagamento.............................................................. 443
Passo 5: Configurações de email....................................................................... 445
Passo 6: Configurações avançadas.................................................................... 446
Passo 7: Efetue o bloqueio de páginas.............................................................. 446
Bloquear uma parte de uma página por meio de shortcode................................ 448
Passo 8: Personalize o Paid Memberships Pro................................................... 449
Capítulo16 ■ Otimizar e escalar com o WordPress...................................................................459
Termos..................................................................................................................459
Origem versus borda..............................................................................................461
Testes.................................................................................................................... 462
O que deve ser testado..................................................................................... 462
Barra de depuração do Chrome........................................................................ 465
Apache Bench...................................................................................................467
Siege................................................................................................................. 474
Blitz.io.............................................................................................................475
W3 Total Cache.....................................................................................................476
Configurações de cache de páginas....................................................................477
Minificar..........................................................................................................479
Caching do banco de dados............................................................................. 480
Cache de objetos.............................................................................................. 480
CDNs...............................................................................................................481
Compressão gzip..............................................................................................481
Hosting................................................................................................................ 482
Hosts específicos para o WordPress................................................................... 482
Instalando o seu próprio servidor..................................................................... 483
Caching seletivo.................................................................................................... 498
A API Transient................................................................................................ 499
Transientes em Multisite...................................................................................502
Usando JavaScript para melhorar o desempenho.................................................... 503
Tabelas personalizadas.......................................................................................... 505
Ignorando o WordPress..........................................................................................507
Download

Sumário