SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Boas práticas de
programação
WordPress
Thiago Mendes
https://www.linkedin.com/in/thiagotmendes/
Thiago Mendes
Analista desenvolvedor web, nerd, pai e
curioso. Trabalho com PHP desde 2004,
criando sites, sistemas entusiasta de Laravel e
há 6 anos focado em WordPress.
@thiagotmendes
Linkedin
GitHub
Não use query_posts()
Está função sobre-escreve a query principal do site. O
mais indicado é utilizar WP_Query ou get_posts por
serem mais performáticos.
“Cada vez que você utiliza query_posts() uma fada
morre”
Leo Baiano
Fonte:
https://developer.wordpress.org/reference/functions/query_posts
/
Agora podemos começar!
O WordPress enquanto sistema, sempre promoveu como política a simplicidade de criação e a
manutenção/compatibilidade das versões antigas.
Este fator contribui para que possam existir projetos que não sigam padrões, principalmente
quando relacionado a arquitetura. Isto também fez com que o WordPress fosse mal visto fora de
sua comunidade por programadores (principalmente quando relacionado às PSRs).
Mas é possível desenvolver grandes projetos em WordPress? o CMS alcançou seu ápice e não
tem mais como crescer?
Estrutura do template
Para criar o template são obrigatórios:
style.css -> Obrigatório, deve conter toda informação referente ao template, sua documentação,
tais como: autor do tema, descrição etc.
index.php-> Arquivo principal do template.
Apesar de opcionais são necessários e indicados:
functions.php -> arquivo responsável pela criação e alteração de funções do sistema.
screenshot.png -> Imagem que vai aparecer na guia de temas disponíveis no repositório de seu
sistema.
Quebre o template em partes
É bem comum que ao escrever códigos, acabemos por gerar um amontoado de funções, html, css e que
isso gere uma enorme quantidade de linhas de código, a melhor forma de se dar manutenção é quebrar
este código em pequenos pedaços.
O WordPress conta com um método eficaz para realizar a inclusão de códigos html em qualquer parte
do template, facilitando também o reaproveitamento do bloco em outros lugares.
get_template_part($slug , $nome): carrega (insere) um bloco de código dentro do template.
Além disso cria um mecanismo simples de sobre-escrever partes em templates filho, bastando apenas
criar um arquivo com mesmo nome representando o mesmo caminho.
Ex:
tema pai > template-parts > exemplo.php
tema filho > template-parts > exemplo.php = irá sobrescrever a versão acima
Obs: para passar valores por template partes utilize include(locate_template('template-part.php'));
Estrutura de pastas
O ideal é cada um utilizar a estrutura que
melhor se adapte, particularmente prefiro
separar os nomes de pasta e arquivos com
base em sua função dentro do template,
desde que dentro de um consenso, e que
principalmente em comum acordo com a
equipe.
Criando loops
Como dito no início, não devemos nunca alterar a query principal do WordPress, ele conta com
métodos que funcionam melhores para este tipo de ocasião:
get_posts(): retorna um array com os últimos posts ou de acordo com os critérios passados, é a
melhor opção quando se tem vários loops simples em um mesmo local, este método utiliza
wp_query() para recuperar os itens do post, sendo assim é bem similar em seu funcionamento
com poucas diferenças.
Obs: utilize wp_reset_postdata(); para limpar a query, assim não prejudica a performance do site.
WP_Query
É a principal query class do WordPress, consegue carregar
uma série de métodos padronizados como have_posts() e
the_post(). A principal diferença para o get_posts() é a
quantidade de atributos possíveis. É o mais indicado quando é
necessário realizar consultas complexas.
Obs: utilize wp_reset_postdata(); para limpar a query, assim não
prejudica a performance do site.
Abuse da arquitetura
WordPress conta com uma grande quantidade de “facilitadores” na criação de templates, a
possibilidade de criar um template personalizado para uma página é um enorme diferencial,
graças a esta função por exemplo que existem os page builders, criando apenas um arquivo
page-minhapagina.php é possível atribuir um layout totalmente específico para aquele caso.
É possível também criar um template modelo que possa ser aplicado diretamente pelo painel.
A sugestão é: criar modelos quando forem ser aplicadas em várias páginas, de forma que o
mesmo template possa ser amplamente utilizado.
Para criar um modelo basta inserir “template name: nome” através de um comentário
Aprenda HTML e CSS
HTML é a base de toda a estrutura de código carregado pelo navegador, mesmo assim é
extremamente subestimado por vários membros da comunidade de desenvolvimento, muitos
deixam para aprender determinados atributos apenas quando necessário, quando na realidade
existem uma série de atributos que podem facilitar sua vida.
Padronização de código não é apenas em seu servidor mas também no front-end que é
carregado, por isso metodologias e linguagens front-end evoluíram tanto nos últimos anos como
no caso do javaScript (ECMAScript) e até no css/sass.
Obs: BEM (block element modifier) é uma boa metodologia para o desenvolvimento do CSS.
http://getbem.com/introduction/
https://www.w3schools.com/html/html5_semantic_elements.asp
Task runners
São automatizadores de tarefas que tem a capacidade
de executar funções complexas para agilizar o
processo de desenvolvimento criando um workflow
de projetos seja na construção até o deploy.
Os mais conhecidos são grunt, gulp e webpack, sendo
mais comum ao WordPress atualmente o gulp. Com
eles é possível por exemplo entregar um código
javaScript e CSS totalmente minificado e testado,
otimizar imagens e até mesmo criar font-icons.
Estes task runes são geralmente compilados através
do node através de javaScript
Gulp: https://gulpjs.com/ Webpack:https://webpack.js.org/
Separe a regra de negócio do template
É bem comum atrelarmos toda a regra de negócio no momento da criação do template,
adicionar Custom Post Types, dentre outras características ao template, sem antes pensar melhor
sobre separação de camadas, obviamente não existe um consenso sobre isso quando
relacionado ao WordPress.
A sugestão neste caso é avaliar bem qual a função do atributo que será criado, se ele é inerente
ao template, ou a regra do negócio, um bom exemplo é o próprio WooCommerce, que é uma regra
de negócio, e o template gira em torno dele.
Para fazer esta separação o indicado é criar plugins, assim deixando para o template a
responsabilidade de ficar apenas com a renderização do layout e atributos que estejam ligados
diretamente a ele.
Para criar um plugin
Basta dentro da pasta plugins criar um arquivo com o seguinte trecho em formato de
comentário:
Obs: utilize apenas os plugins que forem
necessário, não apenas por performance mas
também por segurança, é muito comum
encontrar sites WordPress com dezenas de
plugins instalados, esta é uma prática ruim,
pode afetar diretamente os resultados do seu
site.
Hooks
São formas de alterar comportamentos de determinadas classes ou funções sem alterar o seu
core.
Filters
Altera um valor de variável
Possui retorno
the_title
the_content
wp_insert_post_data
Actions
Faz alguma coisa / Gatilho
Não tem retorno
init
plugins_loaded
wp_enqueue_scripts
delete_user
add_user
save_post
Segurança
WordPress é atualmente o CMS mais utilizado na Web, alguns números chegam a falar em 63%
do mercado de CMS (segundo a W3 Techs), e 35% da web, o fato de tentar sempre manter a
compatibilidade com versões antigas, junto com sua enorme comunidade faz com que sua
arquitetura seja amplamente conhecida e por isso alvo de ataques.
O sistema conta com bons plugins de segurança tal com o WorDfence (site, plugin), ainda assim
existem métodos de ajudar em sua segurança tais como:
1. Configurar o Robots.txt para não traquear certas partes do site
2. Desabilitar o acesso ao xmlrpc.php por ser amplo alvo de ataques
3. Ter atenção nas permissões de pasta (diga não ao 777)
4. Evite instalar plugins desconhecidos, desatualizados ou sem compatibilidade com atual
versão do sistema
5. Mantenha sempre atualizado core e plugins
Robots.txt:
User-agent: *
Disallow: /feed/
Disallow: /trackback/
Disallow: /wp-admin/
Disallow: /wp-content/
Disallow: /wp-includes/
Disallow: /xmlrpc.php
Disallow: /wp-
.htaccess (bloquear xmlrpc.php)
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>
Utilize 755 para pastas 644 para arquivos
find /path/to/wp-folder/ type f ! perm 644 exec chmod 644 {}
;
find /path/to/wp-folder/ type d ! perm 755 exec chmod 755 {}
;
Alguns cases
Faculdade Ietec: https://www.ietec.com.br/
Valenet: http://valenet.com.br/splash/
Relatório de gestão Unimed: https://relatoriodegestao.unimedbh.io/desktop/
FSFX - Fundação São Francisco Xavier: http://fsfx.com.br/homologacao/
Obrigado

Mais conteúdo relacionado

Mais procurados

Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...Leo Baiano
 
Construindo Sistemas Com Django
Construindo Sistemas Com DjangoConstruindo Sistemas Com Django
Construindo Sistemas Com DjangoMarinho Brandão
 
WordPress da instalação à criação de temas personalizados para seu site
WordPress da instalação à criação de temas personalizados para seu siteWordPress da instalação à criação de temas personalizados para seu site
WordPress da instalação à criação de temas personalizados para seu siteFlávio Ricardo B. Meira
 
Testes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio NasTestes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio NasWordCamp Floripa
 
Boas práticas de django
Boas práticas de djangoBoas práticas de django
Boas práticas de djangoFilipe Ximenes
 
Ebook - Processo de Otimização de Sites WordPress
Ebook - Processo de Otimização de Sites WordPressEbook - Processo de Otimização de Sites WordPress
Ebook - Processo de Otimização de Sites WordPressDaniel Paz
 
Wordpress SEO - Muito além de plugins
Wordpress SEO - Muito além de pluginsWordpress SEO - Muito além de plugins
Wordpress SEO - Muito além de pluginsFabio Ricotta
 
Desenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi BuilderDesenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi BuilderDaniel Paz
 
Técnicas de frontend para aplicações django - PythonBrasil[9]
Técnicas de frontend para aplicações django  - PythonBrasil[9]Técnicas de frontend para aplicações django  - PythonBrasil[9]
Técnicas de frontend para aplicações django - PythonBrasil[9]Rael Max
 
Construindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPressConstruindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPressLeo Baiano
 
Como criar um plugin sem ser desenvolvedor
Como criar um plugin sem ser desenvolvedorComo criar um plugin sem ser desenvolvedor
Como criar um plugin sem ser desenvolvedorMarcos Alexandre
 
PHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraPHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraKleber Silva
 
Hierarquia de templates WordPress
Hierarquia de templates WordPressHierarquia de templates WordPress
Hierarquia de templates WordPressGuga Alves
 
Wordpress SEO - Plugins, conteúdo, engajamento e análise
Wordpress SEO - Plugins, conteúdo, engajamento e análiseWordpress SEO - Plugins, conteúdo, engajamento e análise
Wordpress SEO - Plugins, conteúdo, engajamento e análiseFabio Ricotta
 

Mais procurados (20)

Wordpress para iniciantes
Wordpress para iniciantesWordpress para iniciantes
Wordpress para iniciantes
 
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
 
Construindo Sistemas Com Django
Construindo Sistemas Com DjangoConstruindo Sistemas Com Django
Construindo Sistemas Com Django
 
WordPress da instalação à criação de temas personalizados para seu site
WordPress da instalação à criação de temas personalizados para seu siteWordPress da instalação à criação de temas personalizados para seu site
WordPress da instalação à criação de temas personalizados para seu site
 
Angular js
Angular jsAngular js
Angular js
 
Cake Php
Cake PhpCake Php
Cake Php
 
Testes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio NasTestes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio Nas
 
Boas práticas de django
Boas práticas de djangoBoas práticas de django
Boas práticas de django
 
Ebook - Processo de Otimização de Sites WordPress
Ebook - Processo de Otimização de Sites WordPressEbook - Processo de Otimização de Sites WordPress
Ebook - Processo de Otimização de Sites WordPress
 
Wordpress SEO - Muito além de plugins
Wordpress SEO - Muito além de pluginsWordpress SEO - Muito além de plugins
Wordpress SEO - Muito além de plugins
 
Desenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi BuilderDesenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi Builder
 
ASP.NET MVC 5.x
ASP.NET MVC 5.xASP.NET MVC 5.x
ASP.NET MVC 5.x
 
Técnicas de frontend para aplicações django - PythonBrasil[9]
Técnicas de frontend para aplicações django  - PythonBrasil[9]Técnicas de frontend para aplicações django  - PythonBrasil[9]
Técnicas de frontend para aplicações django - PythonBrasil[9]
 
Construindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPressConstruindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPress
 
Mini Curso Wordpress
Mini Curso WordpressMini Curso Wordpress
Mini Curso Wordpress
 
Como criar um plugin sem ser desenvolvedor
Como criar um plugin sem ser desenvolvedorComo criar um plugin sem ser desenvolvedor
Como criar um plugin sem ser desenvolvedor
 
Apostila MVC
Apostila MVCApostila MVC
Apostila MVC
 
PHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraPHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e Segura
 
Hierarquia de templates WordPress
Hierarquia de templates WordPressHierarquia de templates WordPress
Hierarquia de templates WordPress
 
Wordpress SEO - Plugins, conteúdo, engajamento e análise
Wordpress SEO - Plugins, conteúdo, engajamento e análiseWordpress SEO - Plugins, conteúdo, engajamento e análise
Wordpress SEO - Plugins, conteúdo, engajamento e análise
 

Semelhante a Boas práticas WordPress

Word camp sp 2017 willian marques
Word camp sp 2017   willian marquesWord camp sp 2017   willian marques
Word camp sp 2017 willian marquesWillian Marques
 
Otimizacao Front-End para WordPress - OlhoSEO 2013
Otimizacao Front-End para WordPress - OlhoSEO 2013Otimizacao Front-End para WordPress - OlhoSEO 2013
Otimizacao Front-End para WordPress - OlhoSEO 2013Guga Alves
 
The Ultimate Guide to Development in WordPress
The Ultimate Guide to Development in WordPressThe Ultimate Guide to Development in WordPress
The Ultimate Guide to Development in WordPressJackson F. de A. Mafra
 
Programação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com DojoProgramação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com Dojofabioginzel
 
Wordpress - Gerenciamento de Blogs e sites - Aula 1
Wordpress - Gerenciamento de Blogs e sites - Aula 1Wordpress - Gerenciamento de Blogs e sites - Aula 1
Wordpress - Gerenciamento de Blogs e sites - Aula 1Saulo Matias
 
Wordpress e suas funções
Wordpress e suas funçõesWordpress e suas funções
Wordpress e suas funçõesDaniel Marcos
 
Jetpack, um Canivete Suíço no seu WordPress (WordCamp São Paulo 2014)​
Jetpack, um Canivete Suíço no seu WordPress (WordCamp São Paulo 2014)​Jetpack, um Canivete Suíço no seu WordPress (WordCamp São Paulo 2014)​
Jetpack, um Canivete Suíço no seu WordPress (WordCamp São Paulo 2014)​Valério Souza
 
Introducao cms-wordpress
Introducao cms-wordpressIntroducao cms-wordpress
Introducao cms-wordpressMateus Neves
 
Infraestrutura como código Terraform aws openshift Ansible
Infraestrutura como código Terraform aws openshift AnsibleInfraestrutura como código Terraform aws openshift Ansible
Infraestrutura como código Terraform aws openshift AnsibleClaudemir de Almeida Rosa
 
WordPress Multisite: Desenvolvendo Portais com Sites Interligados.
WordPress Multisite: Desenvolvendo Portais com Sites Interligados.WordPress Multisite: Desenvolvendo Portais com Sites Interligados.
WordPress Multisite: Desenvolvendo Portais com Sites Interligados.Nícholas André
 
Desenvolvimento web com (cms) Drupal
Desenvolvimento web com (cms) DrupalDesenvolvimento web com (cms) Drupal
Desenvolvimento web com (cms) DrupalEmerson Barros
 
Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisrafaelberlanda
 
Estrutura de um Front-End eficiente (para iniciantes)
Estrutura de um Front-End eficiente (para iniciantes)Estrutura de um Front-End eficiente (para iniciantes)
Estrutura de um Front-End eficiente (para iniciantes)Sérgio Vilar
 
Top Plugins de Segurança para WordPress
Top Plugins de Segurança para WordPressTop Plugins de Segurança para WordPress
Top Plugins de Segurança para WordPressTales Augusto
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetosFrancisco Santos
 
php orientado_a_objetos
php orientado_a_objetosphp orientado_a_objetos
php orientado_a_objetosFer Nando
 

Semelhante a Boas práticas WordPress (20)

Word camp sp 2017 willian marques
Word camp sp 2017   willian marquesWord camp sp 2017   willian marques
Word camp sp 2017 willian marques
 
Otimizacao Front-End para WordPress - OlhoSEO 2013
Otimizacao Front-End para WordPress - OlhoSEO 2013Otimizacao Front-End para WordPress - OlhoSEO 2013
Otimizacao Front-End para WordPress - OlhoSEO 2013
 
The Ultimate Guide to Development in WordPress
The Ultimate Guide to Development in WordPressThe Ultimate Guide to Development in WordPress
The Ultimate Guide to Development in WordPress
 
Programação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com DojoProgramação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com Dojo
 
Wordpress - Gerenciamento de Blogs e sites - Aula 1
Wordpress - Gerenciamento de Blogs e sites - Aula 1Wordpress - Gerenciamento de Blogs e sites - Aula 1
Wordpress - Gerenciamento de Blogs e sites - Aula 1
 
Wordpress e suas funções
Wordpress e suas funçõesWordpress e suas funções
Wordpress e suas funções
 
Modelo de desenvolvimento de software em 3 camadas para Wordpress
Modelo de desenvolvimento de software em 3 camadas para WordpressModelo de desenvolvimento de software em 3 camadas para Wordpress
Modelo de desenvolvimento de software em 3 camadas para Wordpress
 
Jetpack, um Canivete Suíço no seu WordPress (WordCamp São Paulo 2014)​
Jetpack, um Canivete Suíço no seu WordPress (WordCamp São Paulo 2014)​Jetpack, um Canivete Suíço no seu WordPress (WordCamp São Paulo 2014)​
Jetpack, um Canivete Suíço no seu WordPress (WordCamp São Paulo 2014)​
 
Introducao cms-wordpress
Introducao cms-wordpressIntroducao cms-wordpress
Introducao cms-wordpress
 
Infraestrutura como código Terraform aws openshift Ansible
Infraestrutura como código Terraform aws openshift AnsibleInfraestrutura como código Terraform aws openshift Ansible
Infraestrutura como código Terraform aws openshift Ansible
 
Wordpress
WordpressWordpress
Wordpress
 
Wordpress
WordpressWordpress
Wordpress
 
WordPress Multisite: Desenvolvendo Portais com Sites Interligados.
WordPress Multisite: Desenvolvendo Portais com Sites Interligados.WordPress Multisite: Desenvolvendo Portais com Sites Interligados.
WordPress Multisite: Desenvolvendo Portais com Sites Interligados.
 
Desenvolvimento web com (cms) Drupal
Desenvolvimento web com (cms) DrupalDesenvolvimento web com (cms) Drupal
Desenvolvimento web com (cms) Drupal
 
Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portais
 
Estrutura de um Front-End eficiente (para iniciantes)
Estrutura de um Front-End eficiente (para iniciantes)Estrutura de um Front-End eficiente (para iniciantes)
Estrutura de um Front-End eficiente (para iniciantes)
 
WordPress
WordPressWordPress
WordPress
 
Top Plugins de Segurança para WordPress
Top Plugins de Segurança para WordPressTop Plugins de Segurança para WordPress
Top Plugins de Segurança para WordPress
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
 
php orientado_a_objetos
php orientado_a_objetosphp orientado_a_objetos
php orientado_a_objetos
 

Boas práticas WordPress

  • 1. Boas práticas de programação WordPress Thiago Mendes https://www.linkedin.com/in/thiagotmendes/
  • 2. Thiago Mendes Analista desenvolvedor web, nerd, pai e curioso. Trabalho com PHP desde 2004, criando sites, sistemas entusiasta de Laravel e há 6 anos focado em WordPress. @thiagotmendes Linkedin GitHub
  • 3. Não use query_posts() Está função sobre-escreve a query principal do site. O mais indicado é utilizar WP_Query ou get_posts por serem mais performáticos. “Cada vez que você utiliza query_posts() uma fada morre” Leo Baiano Fonte: https://developer.wordpress.org/reference/functions/query_posts /
  • 4. Agora podemos começar! O WordPress enquanto sistema, sempre promoveu como política a simplicidade de criação e a manutenção/compatibilidade das versões antigas. Este fator contribui para que possam existir projetos que não sigam padrões, principalmente quando relacionado a arquitetura. Isto também fez com que o WordPress fosse mal visto fora de sua comunidade por programadores (principalmente quando relacionado às PSRs). Mas é possível desenvolver grandes projetos em WordPress? o CMS alcançou seu ápice e não tem mais como crescer?
  • 5. Estrutura do template Para criar o template são obrigatórios: style.css -> Obrigatório, deve conter toda informação referente ao template, sua documentação, tais como: autor do tema, descrição etc. index.php-> Arquivo principal do template. Apesar de opcionais são necessários e indicados: functions.php -> arquivo responsável pela criação e alteração de funções do sistema. screenshot.png -> Imagem que vai aparecer na guia de temas disponíveis no repositório de seu sistema.
  • 6.
  • 7. Quebre o template em partes É bem comum que ao escrever códigos, acabemos por gerar um amontoado de funções, html, css e que isso gere uma enorme quantidade de linhas de código, a melhor forma de se dar manutenção é quebrar este código em pequenos pedaços. O WordPress conta com um método eficaz para realizar a inclusão de códigos html em qualquer parte do template, facilitando também o reaproveitamento do bloco em outros lugares. get_template_part($slug , $nome): carrega (insere) um bloco de código dentro do template. Além disso cria um mecanismo simples de sobre-escrever partes em templates filho, bastando apenas criar um arquivo com mesmo nome representando o mesmo caminho. Ex: tema pai > template-parts > exemplo.php tema filho > template-parts > exemplo.php = irá sobrescrever a versão acima Obs: para passar valores por template partes utilize include(locate_template('template-part.php'));
  • 8. Estrutura de pastas O ideal é cada um utilizar a estrutura que melhor se adapte, particularmente prefiro separar os nomes de pasta e arquivos com base em sua função dentro do template, desde que dentro de um consenso, e que principalmente em comum acordo com a equipe.
  • 9. Criando loops Como dito no início, não devemos nunca alterar a query principal do WordPress, ele conta com métodos que funcionam melhores para este tipo de ocasião: get_posts(): retorna um array com os últimos posts ou de acordo com os critérios passados, é a melhor opção quando se tem vários loops simples em um mesmo local, este método utiliza wp_query() para recuperar os itens do post, sendo assim é bem similar em seu funcionamento com poucas diferenças. Obs: utilize wp_reset_postdata(); para limpar a query, assim não prejudica a performance do site.
  • 10.
  • 11. WP_Query É a principal query class do WordPress, consegue carregar uma série de métodos padronizados como have_posts() e the_post(). A principal diferença para o get_posts() é a quantidade de atributos possíveis. É o mais indicado quando é necessário realizar consultas complexas. Obs: utilize wp_reset_postdata(); para limpar a query, assim não prejudica a performance do site.
  • 12. Abuse da arquitetura WordPress conta com uma grande quantidade de “facilitadores” na criação de templates, a possibilidade de criar um template personalizado para uma página é um enorme diferencial, graças a esta função por exemplo que existem os page builders, criando apenas um arquivo page-minhapagina.php é possível atribuir um layout totalmente específico para aquele caso. É possível também criar um template modelo que possa ser aplicado diretamente pelo painel. A sugestão é: criar modelos quando forem ser aplicadas em várias páginas, de forma que o mesmo template possa ser amplamente utilizado. Para criar um modelo basta inserir “template name: nome” através de um comentário
  • 13. Aprenda HTML e CSS HTML é a base de toda a estrutura de código carregado pelo navegador, mesmo assim é extremamente subestimado por vários membros da comunidade de desenvolvimento, muitos deixam para aprender determinados atributos apenas quando necessário, quando na realidade existem uma série de atributos que podem facilitar sua vida. Padronização de código não é apenas em seu servidor mas também no front-end que é carregado, por isso metodologias e linguagens front-end evoluíram tanto nos últimos anos como no caso do javaScript (ECMAScript) e até no css/sass. Obs: BEM (block element modifier) é uma boa metodologia para o desenvolvimento do CSS. http://getbem.com/introduction/ https://www.w3schools.com/html/html5_semantic_elements.asp
  • 14. Task runners São automatizadores de tarefas que tem a capacidade de executar funções complexas para agilizar o processo de desenvolvimento criando um workflow de projetos seja na construção até o deploy. Os mais conhecidos são grunt, gulp e webpack, sendo mais comum ao WordPress atualmente o gulp. Com eles é possível por exemplo entregar um código javaScript e CSS totalmente minificado e testado, otimizar imagens e até mesmo criar font-icons. Estes task runes são geralmente compilados através do node através de javaScript Gulp: https://gulpjs.com/ Webpack:https://webpack.js.org/
  • 15. Separe a regra de negócio do template É bem comum atrelarmos toda a regra de negócio no momento da criação do template, adicionar Custom Post Types, dentre outras características ao template, sem antes pensar melhor sobre separação de camadas, obviamente não existe um consenso sobre isso quando relacionado ao WordPress. A sugestão neste caso é avaliar bem qual a função do atributo que será criado, se ele é inerente ao template, ou a regra do negócio, um bom exemplo é o próprio WooCommerce, que é uma regra de negócio, e o template gira em torno dele. Para fazer esta separação o indicado é criar plugins, assim deixando para o template a responsabilidade de ficar apenas com a renderização do layout e atributos que estejam ligados diretamente a ele.
  • 16. Para criar um plugin Basta dentro da pasta plugins criar um arquivo com o seguinte trecho em formato de comentário: Obs: utilize apenas os plugins que forem necessário, não apenas por performance mas também por segurança, é muito comum encontrar sites WordPress com dezenas de plugins instalados, esta é uma prática ruim, pode afetar diretamente os resultados do seu site.
  • 17. Hooks São formas de alterar comportamentos de determinadas classes ou funções sem alterar o seu core. Filters Altera um valor de variável Possui retorno the_title the_content wp_insert_post_data Actions Faz alguma coisa / Gatilho Não tem retorno init plugins_loaded wp_enqueue_scripts delete_user add_user save_post
  • 18. Segurança WordPress é atualmente o CMS mais utilizado na Web, alguns números chegam a falar em 63% do mercado de CMS (segundo a W3 Techs), e 35% da web, o fato de tentar sempre manter a compatibilidade com versões antigas, junto com sua enorme comunidade faz com que sua arquitetura seja amplamente conhecida e por isso alvo de ataques. O sistema conta com bons plugins de segurança tal com o WorDfence (site, plugin), ainda assim existem métodos de ajudar em sua segurança tais como: 1. Configurar o Robots.txt para não traquear certas partes do site 2. Desabilitar o acesso ao xmlrpc.php por ser amplo alvo de ataques 3. Ter atenção nas permissões de pasta (diga não ao 777) 4. Evite instalar plugins desconhecidos, desatualizados ou sem compatibilidade com atual versão do sistema 5. Mantenha sempre atualizado core e plugins
  • 19. Robots.txt: User-agent: * Disallow: /feed/ Disallow: /trackback/ Disallow: /wp-admin/ Disallow: /wp-content/ Disallow: /wp-includes/ Disallow: /xmlrpc.php Disallow: /wp- .htaccess (bloquear xmlrpc.php) <Files xmlrpc.php> Order Allow,Deny Deny from all </Files> Utilize 755 para pastas 644 para arquivos find /path/to/wp-folder/ type f ! perm 644 exec chmod 644 {} ; find /path/to/wp-folder/ type d ! perm 755 exec chmod 755 {} ;
  • 20. Alguns cases Faculdade Ietec: https://www.ietec.com.br/ Valenet: http://valenet.com.br/splash/ Relatório de gestão Unimed: https://relatoriodegestao.unimedbh.io/desktop/ FSFX - Fundação São Francisco Xavier: http://fsfx.com.br/homologacao/