coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para wordpress

46
Quem sou eu? É sério galera!

Upload: leo-baiano

Post on 15-Apr-2017

262 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Quem sou eu?

É sério galera!

Page 2: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Leo Baiano#WebDev para pagar as contasMúsico quando estou bêbadoPoeta por vocaçãoRomântico de nascençaFAZEDOR DE SLIDES nas horas vagas

Pode não parecer, mas

ESTE CARA SOU EU

Page 3: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

O que são temas e plugins WordPress?

Tema

O tema WordPress é uma coleção de arquivos que trabalham juntos para produzir uma interface gráfica para o site.

Plugin

Conjunto de arquivos que criam funcionalidades ou modificam funcionalidades para o site WordPress.

Page 4: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Criar VS CustomizarDesenvolverVS

Customizar

Page 5: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Coisas que eu gostaria de saber antes de trabalhar com

Joomla!

… isso mesmo que você ouviu, Joomla!

Page 6: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Esqueça o Joomla!Joomla! é legalzinho, mas você já ouviu falar de WordPress?

Page 7: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Coisas que eu gostaria de saber antes de começar a

desenvolver temas e plugins para WordPress

… uma palestra sobre mágica

Page 8: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Não seja preguiçoso

A regra de ouro!

Page 9: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

- Prazo curto- Pode bugar outras áreas- Tá funcionando, segue o fluxo- Não fui eu- Leo dá uma olhada nisso aqui - (15 em cada 10 atendimentos usam essa)

Não seja preguiçoso

Page 10: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

É importante ler a documentação das funções

https://codex.wordpress.org/

Page 11: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Como funciona a query padrão do WordPress

Page 12: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

A query padrão do WordPress

O que é uma query?Traduzindo para o português query significa consulta. No universo do desenvolvimento uma query é o conjunto de instruções utilizadas para fazer uma consulta por informações armazenadas em um banco de dados.

Exemplo:

"SELECIONE todos os campos da tabela ALUNOS" - pt_BR

"SELECT * FROM ALUNOS" - MySQL

Page 13: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Como escrevo minhas querys no WordPress?

mistério!!!

Não escreve

Page 14: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

A query padrão do WordPress

No desenvolvimento de temas você dificilmente vai precisar escrever uma query, o WordPress é bonzinho e faz isso para você.

A query é gerada com base na página acessada através de parâmetros que são passados de forma mágica para que você não precise se preocupar. :D

Page 15: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Como modificar corretamente a query padrão do WordPress?

Page 16: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Ajude as fadinhas

… não use query_posts( );

Page 17: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Porque não usar query_posts();?

Eu sei que algumas pessoas acham query_posts(); mais bonitinho, mas não façam isso com vocês mesmos, não usem!

O que o CODEX diz:

Nota: Esta função substituirá completamente a consulta principal e não se destina a ser utilizada por plugins ou temas. Sua abordagem excessivamente simplista para modificar a consulta principal pode ser problemática e deve ser evitada sempre que possível.

Page 18: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

pre_get_posts();Preguetinho para os íntimos.

Page 19: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Hierarquia de modelos do WordPress

Page 20: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Hierarquia de modelos do WordPress

O que são?

Como funcionam?

Qual sua ligação com a query padrão?

https://codex.wordpress.org/pt-br:Hierarquia_de_Modelos_WordPress

Page 21: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress
Page 22: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Exemplos

Página Inicial (Home)home.phpindex.phpPost únicosingle-{post_type}.phpsingle.phpindex.phpCategoriacategory-{slug}.phpcategory-{id}.phpcategory.phparchive.phpindex.php

Exemplos

Páginamodelo de páginapage-{slug}.phppage-{id}.php page.phpindex.phpTaxonomias Personalizadastaxonomy-{taxonomia}-{termo}.phptaxonomy-{taxonomia}.phptaxonomy.phparchive.phpindex.php

Hierarquia de modelos do WordPress

Page 23: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Nos modelos do tema do seu site você, normalmente, não precisa de multiplos loops ou modificações no loop principal, mas caso seja necessário opte sempre por pre_get_posts() ou WP_Query();

WP_Query(); permite que você informe argumentos para realizar uma query e trazer os posts que deseja para montar seu segundo loop.

Hierarquia de modelos do WordPress

Page 24: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Deixando o site ou plugin pronto para

internacionalização

Page 25: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Deixando o site ou plugin pronto para internacionalização

Quando estamos desenvolvendo um site nem todo conteúdo vem do banco de dados, algumas strings (texto) são impressas diretamente no arquivo de modelo.

Exemplos de strings que são impressas no arquivo:

Botões, label e placeholder de campos de formulário, títulos e âncoras de links...

Page 26: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Funções para internacionalização

Deixando o site ou plugin pronto para internacionalização

https://codex.wordpress.org/L10nhttp://seusobrinho.com.br/blog/funcoes-de-internacionalizacao-do-wordpress/

Page 27: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Hooks: Actions e FiltersA varinha mágica do desenvolvedor WordPress

Page 28: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Hooks: Actions e FiltersActions e filters são ganchos inseridos no core do WordPress para que os desenvolvedores possam modificar o comportamento e a resposta das funções ou disparar ações em momentos específicos.

Actions - Disparam ações

Filters - Modificam o comportamento e resposta

Page 29: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Exemplos de action

- Enviar e-mail para um determinados usuários sempre que um novo post for cadastrado;

- Verificar se existem imagens associadas e deleta-las sempre que um post for deletado

- Exibir um aviso sempre que determinado usuário fizer login

Hooks: Actions e Filters

Page 30: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Exemplos de filter

- Modificar o conteúdo do post ou título para inserir um rodapé por exemplo.- Incluir classes personalizadas na tag <body>- Alterar textos da tela de login

Hooks: Actions e Filters

Page 31: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

add_action( string $tag, callable $function_to_add, int $priority = 10,int $accepted_args = 1 );https://developer.wordpress.org/reference/functions/add_action/

add_filter( string $tag, callable $function_to_add, int $priority = 10,int $accepted_args = 1 );https://developer.wordpress.org/reference/functions/add_filter/

Hooks: Actions e Filters

Page 32: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Para a mágica funcionar todos os detalhes são

importantesDetalhes fazem a diferença, detalhes fazem TODA diferença

Page 33: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

O core do WordPress mostrava:

add_action( 'transition_post_status', 'post_unpublished', 10, 3 );

Eu esqueci da regra de ouro NÃO SEJA PREGUIÇOSO;

Eu esqueci que É IMPORTANTE LER A DOCUMENTAÇÃO

E EU ME FUDI!

Detalhes fazem a diferença

Page 34: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

O WordPress imprimi classes nos elementos

HTML

Page 35: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Classes para estilo CSS

body_class();

class="page page-id-2 page-parent page-template-default logged-in"

post_class();

class="post post-4564 category-48 category-dancing logged-in"

Page 36: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Você pode utilizar filtros para incluir clases CSS que não são padrões do WordPress na lista de classes que serão inseridas pelas funções body_class(); e post_class();

Classes para estilo CSS

Page 37: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Você pode fazer quase tudo com o que o WP lhe trás

prontoCavalo dado não se olha os dentes

Page 38: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Cavalo dado não se olha os dentes

Quase tudo no WordPress é um post, então quando for fazer plugin pense nisso e se aproveite disso. A maioria dos plugins só precisa de alguns CPTs, então quando for criar seu plugin chame os posts pra dançar, abrace eles com carinho, fale baixinho em seu ouvido e garanta um final feliz.

Page 39: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Enviando e-mail do plugin ou Tema

wp_mail();

O WordPress já tem uma função para envio de e-mail, não precisa criar sua própria função no tema ou plugin.

https://developer.wordpress.org/reference/functions/wp_mail/

Page 40: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Ler dados de API

wp_remote_post(); e wp_remote_get();

As duas funções recebem 2 parâmetros, a URL do endpoint que deseja ler e os argumentos, e retorna um array com o cabeçalho e conteúdo.

https://codex.wordpress.org/Function_Reference/wp_remote_posthttps://codex.wordpress.org/Function_Reference/wp_remote_get

Page 41: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Ler dados de API

wp_safe_remote_post();

Esta função é ideal quando a solicitação HTTP está sendo feito para uma URL arbitrária. A URL é validada para evitar redirecionamento e falsificação de solicitação ataques.

https://developer.wordpress.org/reference/functions/wp_safe_remote_post/

Page 42: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Verifica usuário logado e redireciona

auth_redirect();

Essa função verifica se o usuário está logado e caso não esteja ela redireciona ele para a página de login. Ela guarda a página que o usuário tentou acessar e redireciona ele de volta para ela quando ele faz o login.

Esqueci dessa função ontem!

Page 43: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Enviar json de resposta a solicitações AJAX

wp_send_json_success( $data );

Envia um json como resposta a solicitações ajax. Você pode até usar json_decode(); do PHP, mas ai perde toda a mágica do WordPress.

Page 44: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Recuperar os termos filhos de uma taxonamy

get_term_children( $term, $taxonomy );

Função utilizada para recuperar o ID de todos os termos filhos de um deteminado termo de taxonomia.

Page 45: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Tamanhos personalizados

add_image_size ($name, $width, $height, $crop=null );

Cria um tamanho personalizado para o WordPress fazer o crop ou resize automaticamente após o upload das imagens.

add_filter ( 'image_size_names_choose', 'my_custom_sizes');

Adiciona um tamanho personalizado na lista de tamanhos que aparece quando o usuário vai inserir uma imagem no post.

Page 46: Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugins para WordPress

Senta aqui, vamos conversar!