Gostaria de agradecer ao Danilo Sato, Emmanuel Santana, Luca Bastos, Maciel, Moreira, Luiz Aguiar, Fernando Boaglio (ele tem umas fotos de Kanban muito boas no qual utilizei nessa apresentação), Rodrigo de Toledo e Roberto Nogueira pela ajuda e revisão dos Slides e também gostaria de agradecer toda lista de discussão do Visão Ágil, que me deram muitas dicas e fontes interessantes.
Gostaria de agradecer ao Danilo Sato, Emmanuel Santana, Luca Bastos, Maciel, Moreira, Luiz Aguiar, Fernando Boaglio (ele tem umas fotos de Kanban muito boas no qual utilizei nessa apresentação), Rodrigo de Toledo e Roberto Nogueira pela ajuda e revisão dos Slides e também gostaria de agradecer toda lista de discussão do Visão Ágil, que me deram muitas dicas e fontes interessantes.
Scrum: Na prática o que importa são os ValoresDanilo Bardusco
Ontem aconteceu em Recife, mais um evento do Spin, com organização da Teresa Maciel, para falar de desenvolvimento ágil de software. O tema desse ano foi "Agilidade na Prática".
Apesar de eu ter sido convidado para apresentar o case da Globo.com mais uma vez, quando vi o tema do evento, resolvi falar de algo que me preocupa muito ultimamente: A adoção do SCRUM pelo mainstream sem muita preocupação com os princípios e valores que estão por traz das práticas muito simples de serem explicadas e compreendidas.
O SCRUM pode ser facilmente explicado para um leigo no assunto com menos de 2 minutos e 2 ou 3 diagramas. Porém implementar o SCRUM e ter o time no que Jeff Sutherland chama de "Estado de Hiperprodutividade" é uma tarefa muito complexa.
Numa escala de complexidade que vai do simplório, passando pelo complexo, para chegar ao simples, eu classifico o SCRUM como um framework "simples".
Além de toda a teoria da produção puxada, teoria das restrições, lean, PDCA, teoria dos sistemas adaptativos complexos e do paper de Nonaka e Takeuchi, por trás dessa simplicidade do modelo, o SCRUM engloba 38 patterns organizacionais de 60 que foram constatados pela equipe de Pesquisas da Bell Labs nos EUA, durante a ultima década do ultimo século, em projetos de dúzias de empresas ao redor do mundo que tiveram sucesso fora do comum.
http://blog.bardusco.com
Como aplicamos Domain-Driven Design (DDD, Eric Evans) com PHP, usando o framework Neos Flow na Agilize Contabilidade Online (https://www.agilize.com.br). Palestra realizada no 2º Encontro de Dev's PHP (PHP com rapadura), em Fortaleza.
Montando um ambiente de desenvolvimento WordPress utilizando Composer e GITLeo Baiano
Quando estamos trabalhando em um projeto web é importante seguir um padrão e criar rotinas que facilitam o trabalho em equipe. A ideia desta apresentação é mostrar como criar um ambiente de desenvolvimento web, com WordPress, utilizando GIT para controle de versão e Composer para gerenciar as dependências.
Palestra sobre Wordpress e SEO, ensinando como tirar proveito do seu blog com técnicas de SEO. Foram mostrados diversos plugins e técnicas que ajudam o seu website a ganhar mais visitantes. A palestra foi ministrada por Fábio Ricotta, Co-Fundador da MestreSEO, no Campus Party 2010.
Não basta as empresas adotarem as melhores ferramentas, os Analistas de Negócio desenvolverem as melhores soluções, os Gerentes cumprirem os compromissos de data, custos e qualidade dos projetos e as partes interessadas ficarem satisfeitas. Isso é o básico. É preciso ir além da eficiência e eficácia; é necessário comprovar o ROI, demonstrar a efetividade das entregas para agregar valor real ao negócio.
Objetivo desta apresentação é mostrar, explanar mostrar como desenvolver um Business Case para entrega valor e para demonstrar ROi das soluções. Será exibido um framework, técnicas, princípios e boas práticas para construção de um Business Case e exemplos práticos de como aplicar o Business Case para demonstrar o ROI para efetivar a entrega de valor para as partes interessadas
O Guia BABOK® é a melhor referência para aplicação das práticas de análise de negócio e é principal ferramenta de trabalho do Analista de Negócio.No mês de Abril de 2015, foi publicado a nova versão do guia, o BABOK® 3, ele foi revisado, reestruturado e reescrito.
Apresentamos um resumo da nova versão do BABOK®, uma visão geral. Convido todos para aproveitar para conhecer as principais as mudanças do guia, como Framework BACCM (Business Analysis Core Concept Model) e Perspectivas. E também se inteirar das revisões das Áreas de conhecimento, Técnicas e Competências.
Apresentação feita com @DeblynPrado no WordCamp São Paulo 2014 (http://2014.saopaulo.wordcamp.org).
Assista a palestra no WordPress.tv: http://wordpress.tv/2014/12/04/deblyn-prado-e-rafael-funchal-fazendo-milagres-com-wordpress/
Nessa palestra queremos apagar de vez a pergunta “WordPress não é só para blogs?” da mente dos desenvolvedores e mostrar o que é possível criar com esse CMS divino.
Usando o WordPress corretamente milagres podem ser operados em lojas virtuais, redes sociais, newsletter e até em blog veja você meu caro desenvolvedor!
SCRUM e o FDD são Métodos Ágeis que são utilizados para desenvolvimento de software Fizemos uma pequena demonstração de como utilizar o SCRUM e FDD (Featured Driven Development – Desenvolvimento Guiada por Funcionalidade) juntos.
O SCRUM é utilizado para o Gerenciamento e o FDD como parte das práticas de Engenharia de Software. Ambos se complementam.
Esta apresentação demonstra como combinar os métodos ágeis ( SCRUM, FDD e XP) para tornar a Engenharia de Software 100% Ágil.
O SCRUM é responsável pela Gestão de Projeto, o FDD pelos requisitos de software e as práticas XP pela codificação, testes e refactoring.
Esta apresentação explana e demonstra como fazer Análise de Negócio na perspectiva de BI (Business Intelligence) para
desenvolver soluções de BI que entregam valor para as partes interessadas.
Scrum: Na prática o que importa são os ValoresDanilo Bardusco
Ontem aconteceu em Recife, mais um evento do Spin, com organização da Teresa Maciel, para falar de desenvolvimento ágil de software. O tema desse ano foi "Agilidade na Prática".
Apesar de eu ter sido convidado para apresentar o case da Globo.com mais uma vez, quando vi o tema do evento, resolvi falar de algo que me preocupa muito ultimamente: A adoção do SCRUM pelo mainstream sem muita preocupação com os princípios e valores que estão por traz das práticas muito simples de serem explicadas e compreendidas.
O SCRUM pode ser facilmente explicado para um leigo no assunto com menos de 2 minutos e 2 ou 3 diagramas. Porém implementar o SCRUM e ter o time no que Jeff Sutherland chama de "Estado de Hiperprodutividade" é uma tarefa muito complexa.
Numa escala de complexidade que vai do simplório, passando pelo complexo, para chegar ao simples, eu classifico o SCRUM como um framework "simples".
Além de toda a teoria da produção puxada, teoria das restrições, lean, PDCA, teoria dos sistemas adaptativos complexos e do paper de Nonaka e Takeuchi, por trás dessa simplicidade do modelo, o SCRUM engloba 38 patterns organizacionais de 60 que foram constatados pela equipe de Pesquisas da Bell Labs nos EUA, durante a ultima década do ultimo século, em projetos de dúzias de empresas ao redor do mundo que tiveram sucesso fora do comum.
http://blog.bardusco.com
Como aplicamos Domain-Driven Design (DDD, Eric Evans) com PHP, usando o framework Neos Flow na Agilize Contabilidade Online (https://www.agilize.com.br). Palestra realizada no 2º Encontro de Dev's PHP (PHP com rapadura), em Fortaleza.
Montando um ambiente de desenvolvimento WordPress utilizando Composer e GITLeo Baiano
Quando estamos trabalhando em um projeto web é importante seguir um padrão e criar rotinas que facilitam o trabalho em equipe. A ideia desta apresentação é mostrar como criar um ambiente de desenvolvimento web, com WordPress, utilizando GIT para controle de versão e Composer para gerenciar as dependências.
Palestra sobre Wordpress e SEO, ensinando como tirar proveito do seu blog com técnicas de SEO. Foram mostrados diversos plugins e técnicas que ajudam o seu website a ganhar mais visitantes. A palestra foi ministrada por Fábio Ricotta, Co-Fundador da MestreSEO, no Campus Party 2010.
Não basta as empresas adotarem as melhores ferramentas, os Analistas de Negócio desenvolverem as melhores soluções, os Gerentes cumprirem os compromissos de data, custos e qualidade dos projetos e as partes interessadas ficarem satisfeitas. Isso é o básico. É preciso ir além da eficiência e eficácia; é necessário comprovar o ROI, demonstrar a efetividade das entregas para agregar valor real ao negócio.
Objetivo desta apresentação é mostrar, explanar mostrar como desenvolver um Business Case para entrega valor e para demonstrar ROi das soluções. Será exibido um framework, técnicas, princípios e boas práticas para construção de um Business Case e exemplos práticos de como aplicar o Business Case para demonstrar o ROI para efetivar a entrega de valor para as partes interessadas
O Guia BABOK® é a melhor referência para aplicação das práticas de análise de negócio e é principal ferramenta de trabalho do Analista de Negócio.No mês de Abril de 2015, foi publicado a nova versão do guia, o BABOK® 3, ele foi revisado, reestruturado e reescrito.
Apresentamos um resumo da nova versão do BABOK®, uma visão geral. Convido todos para aproveitar para conhecer as principais as mudanças do guia, como Framework BACCM (Business Analysis Core Concept Model) e Perspectivas. E também se inteirar das revisões das Áreas de conhecimento, Técnicas e Competências.
Apresentação feita com @DeblynPrado no WordCamp São Paulo 2014 (http://2014.saopaulo.wordcamp.org).
Assista a palestra no WordPress.tv: http://wordpress.tv/2014/12/04/deblyn-prado-e-rafael-funchal-fazendo-milagres-com-wordpress/
Nessa palestra queremos apagar de vez a pergunta “WordPress não é só para blogs?” da mente dos desenvolvedores e mostrar o que é possível criar com esse CMS divino.
Usando o WordPress corretamente milagres podem ser operados em lojas virtuais, redes sociais, newsletter e até em blog veja você meu caro desenvolvedor!
SCRUM e o FDD são Métodos Ágeis que são utilizados para desenvolvimento de software Fizemos uma pequena demonstração de como utilizar o SCRUM e FDD (Featured Driven Development – Desenvolvimento Guiada por Funcionalidade) juntos.
O SCRUM é utilizado para o Gerenciamento e o FDD como parte das práticas de Engenharia de Software. Ambos se complementam.
Esta apresentação demonstra como combinar os métodos ágeis ( SCRUM, FDD e XP) para tornar a Engenharia de Software 100% Ágil.
O SCRUM é responsável pela Gestão de Projeto, o FDD pelos requisitos de software e as práticas XP pela codificação, testes e refactoring.
Esta apresentação explana e demonstra como fazer Análise de Negócio na perspectiva de BI (Business Intelligence) para
desenvolver soluções de BI que entregam valor para as partes interessadas.
Você quer ser um mestre em criar soluções inovadoras de forma rápida? Então o webinar de Design Sprint é para você!
Design Sprint é uma técnica desenvolvida por pessoas colaboradoras no Google Ventures, baseado no Livro Design Sprint – Jake Knapp, John Zeratsky e Braden Kowitz, onde busca resolver problemas específicos de um produto/ serviço, onde é possível testar e validar as questões levantadas.
É um processo de design “express” onde um grupo de pessoas se reúne por 5 dias para responder questões críticas de negócio através de design, prototipagem e teste das ideias com os usuários. É possível elaborar e testar praticamente qualquer ideia em apenas cinco dias, sem precisar construir e lançar o produto propriamente dito.
Webinar: https://youtu.be/KvGsjBiFbIY
Cronograma:
Sobre o Design Sprint - 19h às 19h30
Perguntas do público - 19h30 às 19h50
Lean & Agile Clinic Online - 19h50 às 20h
Pitch Coletivo Ação:
Para organizações, instituições e startups
que necessitam de facilitação de cerimônias Lean-Agile e/ou desenvolver pessoas, cultura e estrutura de negócios/produto e tecnologia,
o Coletivo AÇÃO
são pessoas facilitadoras com conhecimento, skills e capacidades que se complementam e auto desenvolvem.
Que facilitam dinâmicas/ workshops, formação de times, desenvolve e evolui pessoas/ organizações e comunidade, coaching & mentoring, consultoria humanizada,
diferentemente de empresas de facilitação, cursos e consultoria,
nosso coletivo atua com sinergia, inovação e paixão com técnicas, métodos e ferramentas de acordo com os desafios organizacionais de forma colaborativa e focada no ser humano.
Programação de workshops online: https://bit.ly/AgendaOnlineWorkshops
Programação de workshops Coletivo Ação e Agile Week: https://www.sympla.com.br/coletivoacao
Contato:
contato@coletivoacao.com.br
Redes da Mayra Souza:
https://www.facebook.com/mayra.de.s
https://br.linkedin.com/in/mayrarodriguesdesouza
https://medium.com/@mayrarodriguesdesouza
https://pt.slideshare.net/MayraRodriguesDeSouz
@paola_mayra
Slides do webinário do Blog Mais Cursos Online sobre Vídeos na Educação.
Para acessar os links e outras informações do webinário, acesse o link: http://maiscursosonline.blog.br/
Academia de Lideranças | Programa de Desenvolvimento de LíderesDMT Palestras
Desenvolver líderes é essencial para a sobrevivência de qualquer organização. Ao trabalhar as próprias competências internamente, a empresa se prepara para reter talentos e criar uma cultura organizacional mais forte e duradoura.
Para contribuir com esse desafio, a DMT Consulting apresenta a “Academia de Liderança”. O programa de desenvolvimento de líderes é composto de módulos personalizados que estimulam o desenvolvimento das habilidades e comportamentos dos líderes, preparando o caminho para a inovação e a criatividade no uso das novas ferramentas de gestão.
DMT Consulting | Palestras e Treinamentos
www.dmtconsulting.com.br
emilia@dmtconsulting.com.br
R. Desembargador Jorge Fontana, 80
Belvedere | Belo Horizonte – MG
+55 (31) 41413931 | +55 (31) 2537-5469
INOVAR, POTENCIALIZAR E TRANSFORMAR
A INVASÃO DA TECNOLOGIA NA VIDA DAS PESSOAS É CONSTRUÍDA PRINCIPALMENTE A PARTIR DOS MEIOS DIGITAIS. EM RAZÃO DISSO, AS EMPRESAS, PRECISAM SE ATENTAR PARA INOVAÇÃO GERADORA DE NOVAS FORMAS DE SE COMUNICAR QUE POTENCIALIZAM A ATRAÇÃO E RETENÇÃO DE CLIENTES, ASSIM COMO A GERAÇÃO DE NOVOS NEGÓCIOS. ESSE MOVIMENTO NÃO SE TRATA APENAS EM HABILITAR A PRESENÇA DIGITAL DE SUA EMPRESA, MAS, PRINCIPALMENTE, EM TAMBÉM CAPACITAR E TRANSFORMAR SEUS COLABORADORES PARA ISSO.
Semelhante a Plugins no WordPress: Fazendo o Negócio Direito (20)
1. ¸˜
Introducao
˜
Padroes
Desenvolvimento
¸˜
Consideracoes Finais
Plugins no WordPress
´
Fazendo o Negocio Direito
Vinicius Massuchetto
Campus Party Brasil 2013
Fevereiro de 2013
Vinicius Massuchetto Plugins no WordPress
2. ¸˜
Introducao ¸˜
Apresentacao
˜
Padroes Sobre a Palestra
Desenvolvimento ¸˜
Motivacao
¸˜
Consideracoes Finais Avancando a Ideia
¸
¸˜
Apresentacao
@vmassuchetto
http://github.com/vmassuchetto
http://bitbucket.org/vmassuchetto
¸˜
Apresentacao dispon´vel em:
ı
http://vinicius.soylocoporti.org.br/?p=2191
Vinicius Massuchetto Plugins no WordPress
3. ¸˜
Introducao ¸˜
Apresentacao
˜
Padroes Sobre a Palestra
Desenvolvimento ¸˜
Motivacao
¸˜
Consideracoes Finais Avancando a Ideia
¸
Sobre a Palestra
¸˜ ´
Motivacao, dificuldades e vantagens dos metodos
˜
Padroes de desenvolvimento no WordPress
´
Estrutura de codigo
Interfaces com o WordPress
´ ´
Ferramentas uteis ja presentes no WordPress
Vinicius Massuchetto Plugins no WordPress
4. ¸˜
Introducao ¸˜
Apresentacao
˜
Padroes Sobre a Palestra
Desenvolvimento ¸˜
Motivacao
¸˜
Consideracoes Finais Avancando a Ideia
¸
¸˜
Motivacao
Vinicius Massuchetto Plugins no WordPress
5. ¸˜
Introducao ¸˜
Apresentacao
˜
Padroes Sobre a Palestra
Desenvolvimento ¸˜
Motivacao
¸˜
Consideracoes Finais Avancando a Ideia
¸
Motivos para se criar um plugin
Funcionalidade inexistente
¸˜
Diferente implementacao de uma funcionalidade existente
´ ´
Codigos de tema portaveis
¸˜
Implementacoes modulares para clientes
˜
Forks para ajustes e extensoes de plugins existentes
Vinicius Massuchetto Plugins no WordPress
6. ¸˜
Introducao ¸˜
Apresentacao
˜
Padroes Sobre a Palestra
Desenvolvimento ¸˜
Motivacao
¸˜
Consideracoes Finais Avancando a Ideia
¸
Perguntas
¸˜
Demonstracao, apoio ou funcionalidade cr´tica?
ı
Comunidade, visibilidade ou emprego?
Tempo para suporte?
Vinicius Massuchetto Plugins no WordPress
7. ¸˜
Introducao ¸˜
Apresentacao
˜
Padroes Sobre a Palestra
Desenvolvimento ¸˜
Motivacao
¸˜
Consideracoes Finais Avancando a Ideia
¸
Dificuldades em se escrever um plugin
PHP X WordPress
¸˜ ¸˜ ´
Cultura de leitura de documentacao e inspecao de codigo
Barreira de idioma
Vinicius Massuchetto Plugins no WordPress
8. ¸˜
Introducao ¸˜
Apresentacao
˜
Padroes Sobre a Palestra
Desenvolvimento ¸˜
Motivacao
¸˜
Consideracoes Finais Avancando a Ideia
¸
´
Vantagens de se seguir algumas boas praticas
´
Codigo leg´vel
ı
¸˜
Padronizacao de estruturas
Melhor aprendizado de outros desenvolvedores
¸˜ ´
Melhor manutencao do codigo
Extensibilidade
Distributividade na comunidade do software livre
Vinicius Massuchetto Plugins no WordPress
9. ¸˜
Introducao ¸˜
Apresentacao
˜
Padroes Sobre a Palestra
Desenvolvimento ¸˜
Motivacao
¸˜
Consideracoes Finais Avancando a Ideia
¸
Pensando Em Um Plugin
¸˜
Definicao de escopo e pesquisa de funcionalidades
Se parecer redundante, perguntar e descrever a ideia em
´
listas e foruns
´
Escolha de nome unico e relevante
¸˜
Avaliacao do uso de outras tecnologias e frameworks
Vinicius Massuchetto Plugins no WordPress
10. ¸˜
Introducao ˜
Primeiro Padrao
˜
Padroes Arquivos
Desenvolvimento ˜ ´
Padroes de Codigo
¸˜
Consideracoes Finais ˜
Padroes de SQL
Vinicius Massuchetto Plugins no WordPress
11. ¸˜
Introducao ˜
Primeiro Padrao
˜
Padroes Arquivos
Desenvolvimento ˜ ´
Padroes de Codigo
¸˜
Consideracoes Finais ˜
Padroes de SQL
˜
Primeiro Padrao
Vinicius Massuchetto Plugins no WordPress
12. ¸˜
Introducao ˜
Primeiro Padrao
˜
Padroes Arquivos
Desenvolvimento ˜ ´
Padroes de Codigo
¸˜
Consideracoes Finais ˜
Padroes de SQL
Arquivos
´
Nomear o diretorio e os arquivos coerentemente
´
Incluir somente arquivos necessarios e sob demanda no
´
codigo
´ ¸˜
Permitir que o diretorio do plugin mude usando funcoes
como:
plugins url
plugin dir url
plugin dir path
Vinicius Massuchetto Plugins no WordPress
13. ¸˜
Introducao ˜
Primeiro Padrao
˜
Padroes Arquivos
Desenvolvimento ˜ ´
Padroes de Codigo
¸˜
Consideracoes Finais ˜
Padroes de SQL
¸˜
Nomeacao
./some-plugin
./img
./inc
./js
+ sp.js
+ somelib.js
+ sp.php <-- arquivo principal
+ sp-functions.php
+ sp-admin.php
+ sp-cache.php
Vinicius Massuchetto Plugins no WordPress
14. ¸˜
Introducao ˜
Primeiro Padrao
˜
Padroes Arquivos
Desenvolvimento ˜ ´
Padroes de Codigo
¸˜
Consideracoes Finais ˜
Padroes de SQL
˜
Inclusao Condicional
if ( is_admin() ){
/* interface administrativa */
add_action ...
add_filter ...
} else {
/* frontend */
add_action ...
add_filter ...
}
Vinicius Massuchetto Plugins no WordPress
15. ¸˜
Introducao ˜
Primeiro Padrao
˜
Padroes Arquivos
Desenvolvimento ˜ ´
Padroes de Codigo
¸˜
Consideracoes Finais ˜
Padroes de SQL
˜ ´
Padroes de Codigo
˜ ´
Ater-se aos padroes recomendados para codigo e
¸˜
documentacao
¸˜
Nomear as estruturas e funcoes com um identificador
´
unico
´
Clareza e melhor do que praticidade
Vinicius Massuchetto Plugins no WordPress
16. ¸˜
Introducao ˜
Primeiro Padrao
˜
Padroes Arquivos
Desenvolvimento ˜ ´
Padroes de Codigo
¸˜
Consideracoes Finais ˜
Padroes de SQL
Tag PHP
Errado
<? /* code */ ?>
<?=$var?>
<% /* code */ %>
Vinicius Massuchetto Plugins no WordPress
17. ¸˜
Introducao ˜
Primeiro Padrao
˜
Padroes Arquivos
Desenvolvimento ˜ ´
Padroes de Codigo
¸˜
Consideracoes Finais ˜
Padroes de SQL
Tag PHP
Certo
<?php /* code */ ?>
<?php echo $var; ?>
Vinicius Massuchetto Plugins no WordPress
18. ¸˜
Introducao ˜
Primeiro Padrao
˜
Padroes Arquivos
Desenvolvimento ˜ ´
Padroes de Codigo
¸˜
Consideracoes Finais ˜
Padroes de SQL
Chaves
Errado
if(condition)
{
action1();
action2();
}
else
{
action3();
action4();
}
Vinicius Massuchetto Plugins no WordPress
19. ¸˜
Introducao ˜
Primeiro Padrao
˜
Padroes Arquivos
Desenvolvimento ˜ ´
Padroes de Codigo
¸˜
Consideracoes Finais ˜
Padroes de SQL
Chaves
Certo
if ( condition ) {
action1();
action2();
} else {
action3();
action4();
}
Vinicius Massuchetto Plugins no WordPress
20. ¸˜
Introducao ˜
Primeiro Padrao
˜
Padroes Arquivos
Desenvolvimento ˜ ´
Padroes de Codigo
¸˜
Consideracoes Finais ˜
Padroes de SQL
¸˜
Funcoes
Errado
function some_function($param1=’foo’, $param2=’bar’) {
/* code */
}
class SomeClass {
/* code */
}
Vinicius Massuchetto Plugins no WordPress
21. ¸˜
Introducao ˜
Primeiro Padrao
˜
Padroes Arquivos
Desenvolvimento ˜ ´
Padroes de Codigo
¸˜
Consideracoes Finais ˜
Padroes de SQL
¸˜
Funcoes
Certo
function some_function( $param1 = ’foo’, $param2 = ’bar’ ) {
/* code */
}
class Some_Class {
/* code */
}
Vinicius Massuchetto Plugins no WordPress
22. ¸˜
Introducao ˜
Primeiro Padrao
˜
Padroes Arquivos
Desenvolvimento ˜ ´
Padroes de Codigo
¸˜
Consideracoes Finais ˜
Padroes de SQL
Vetores
Errado
$x = $foo[$bar];
$x = $foo[ ’bar’ ];
Vinicius Massuchetto Plugins no WordPress
23. ¸˜
Introducao ˜
Primeiro Padrao
˜
Padroes Arquivos
Desenvolvimento ˜ ´
Padroes de Codigo
¸˜
Consideracoes Finais ˜
Padroes de SQL
Vetores
Certo
$x = $foo[ $bar ];
$x = $foo[’bar’];
Vinicius Massuchetto Plugins no WordPress
24. ¸˜
Introducao ˜
Primeiro Padrao
˜
Padroes Arquivos
Desenvolvimento ˜ ´
Padroes de Codigo
¸˜
Consideracoes Finais ˜
Padroes de SQL
˜
Padroes de SQL
Evitar escrever consultas
Utilizar filtros para a WP Query
Escrever as palavras SQL em caixa alta
´
Validar os tipos de dados antes de utiliza-los
Utilizar a wpdb
Se precisar criar tabelas no banco, use $wpdb->prefix
Vinicius Massuchetto Plugins no WordPress
25. ¸˜
Introducao ˜
Primeiro Padrao
˜
Padroes Arquivos
Desenvolvimento ˜ ´
Padroes de Codigo
¸˜
Consideracoes Finais ˜
Padroes de SQL
Exemplo de Consulta
Errado
$r = $wpdb->get_results("select * from wp_posts where post_date
> ’2012-08-25 00:00:00’");
Vinicius Massuchetto Plugins no WordPress
26. ¸˜
Introducao ˜
Primeiro Padrao
˜
Padroes Arquivos
Desenvolvimento ˜ ´
Padroes de Codigo
¸˜
Consideracoes Finais ˜
Padroes de SQL
Exemplo de Consulta
Certo
$r = $wpdb->get_results( $wpdb->prepare(
"
SELECT ID, post_title, post_content
FROM $wpdb->posts
WHERE 1=1
AND post_date > ’%s’
"
, $some_date ) );
Vinicius Massuchetto Plugins no WordPress
27. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Vinicius Massuchetto Plugins no WordPress
28. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Debug
Vinicius Massuchetto Plugins no WordPress
29. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Constantes de debug no wp-config.php
WP DEBUG
WP DEBUG LOG
WP DEBUG DISPLAY
SCRIPT DEBUG
SAVEQUERIES
Vinicius Massuchetto Plugins no WordPress
30. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Cabecalho
¸
Todo plugin comeca pelo comeco..
¸ ¸
/*
* Plugin Name: Nome do Plugin
* Version: 0.01
* Description: Texto longo
* Author: Nome do Autor
* Contributors: Logins no WordPress.org
* Plugin URI: http://uma-url.com
*/
Vinicius Massuchetto Plugins no WordPress
31. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Estrutura Procedural
function callback1 () { /* code */ }
add_action( ’hook1’, ’callback1’ );
function callback2 () { /* code */ }
add_action( ’hook2’, ’callback2’ );
function callback3 ($param) { /* code */ return $param; }
add_filter( ’filter’, ’callback3’ );
Vinicius Massuchetto Plugins no WordPress
32. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Estrutura Orientada a Objetos
class Some_Plugin {
function Some_Plugin() {
add_action( ’hook1’, array($this, ’hook1’ ));
add_action( ’hook1’, array($this, ’hook2’ ));
}
function hook1 { /* code */ }
function hook2 { /* code */ }
}
Vinicius Massuchetto Plugins no WordPress
33. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
¸˜
Vantagens da Orientacao a Objetos em Plugins
´
Organiza o codigo
Melhora a extensibilidade
Reduz o impacto no escopo global do PHP
˜ ´
Ajuda a nao introduzir variaveis globais
Vinicius Massuchetto Plugins no WordPress
34. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
¸˜
Ativacao
register activation hook
¸˜ ¸˜ ˜
Criacao de opcoes padrao
¸˜
Criacao de tabelas
¸˜ ´
Exibicao de avisos para o usuario configurar o plugin
Vinicius Massuchetto Plugins no WordPress
35. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
¸˜
Desativacao
register deactivation hook
˜
Em geral nao deve causar nenhuma perda de dados
Desabilitar plugins dependentes
Vinicius Massuchetto Plugins no WordPress
36. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
¸˜
Desinstalacao
register uninstall hook
˜
Nao deve deixar nenhum dado residual no WordPress
¸˜ ´
Remove opcoes do usuario
Remove tabelas
´
Avisa o usuario antes de remover qualquer dado
(admin notices)
Vinicius Massuchetto Plugins no WordPress
37. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
¸˜
Inicializacao
* init()
´
Geralmente atraves de um procedimento inicializador
Vinicius Massuchetto Plugins no WordPress
38. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
¸˜
Inicializacao
function someplugin_init () {
add_action( ’hook1’, ’callback1’ );
add_action( ’hook2’, ’callback2’ );
add_filter( ’filter’, ’callback3’ );
}
someplugin_init();
add_action( ’plugins_loaded’, ’someplugin_init’ );
Vinicius Massuchetto Plugins no WordPress
39. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
¸˜
Inicializacao
class Some_Plugin {
function SomePlugin() {
add_action( ’hook1’, array($this, ’hook1’ ));
add_action( ’hook1’, array($this, ’hook2’ ));
}
function hook1 { /* code */ }
function hook2 { /* code */ }
}
new Some_Plugin();
add_action( ’plugins_loaded’,
array( ’Some_Plugin’, ’Some_Plugin’ ));
Vinicius Massuchetto Plugins no WordPress
40. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Consultas
Sempre prefira a WP Query em loops estruturados:
have posts
the post
next post
rewrind posts
Vinicius Massuchetto Plugins no WordPress
41. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Consultas
Nunca fuja do loop:
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php // content ?>
<?php endwhile; ?>
<?php else : ?>
<?php // not found ?>
<?php endif; ?>
Vinicius Massuchetto Plugins no WordPress
42. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Filtros de Consulta
posts where
posts join
posts orderby
posts groupby
Vinicius Massuchetto Plugins no WordPress
43. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Banco de dados
´
Em ultimo caso, use a wpdb:
query
prepare
insert
update
get var
Vinicius Massuchetto Plugins no WordPress
44. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Tratando dados para consultas
$wpdb->get_var( $wpdb->prepare(
"
SELECT foo
FROM {$wpdb->table}
WHERE 1=1
AND bar_id = %d
AND bar_slug = %s
",
$id, $slug
) );
Vinicius Massuchetto Plugins no WordPress
45. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
¸˜
Uso de Acoes e Filtros
¸˜
Base da construcao de plugins no WordPress
Certificar-se de agendar os eventos e tratar os dados
adequadamente
Vinicius Massuchetto Plugins no WordPress
46. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
¸˜ ¸˜
Implementacao de Acoes e Filtros
Oferecer extensibilidade aos dados gerados
¸˜ `
Possibilitar a insercao de novos procedimentos a medida
que eventos relevantes acontecem
Vinicius Massuchetto Plugins no WordPress
47. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
¸˜ ¸˜
Implementacao de Acoes
function show_something() {
do_action( ’before_show_something’ );
/* something */
do_action( ’after_show_something’ );
}
function show_something_header() { /* header */ }
add_action( ’before_show_something’, ’show_something_header’ );
function show_something_footer() { /* footer */ }
add_action( ’after_show_something’, ’show_something_footer’ );
Vinicius Massuchetto Plugins no WordPress
48. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
¸˜
Implementacao de Filtros
function get_something ( $param ) {
/* get $something */
return apply_filters( ’get_something’, $something );
}
function parse_something ( $something ) {
return preg_replace( $regex, $replace, $something );
}
add_filter( ’get_something’, ’parse_something’ );
Vinicius Massuchetto Plugins no WordPress
49. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
¸˜ ¸˜
Implementacao de Acoes e Filtros
<form>
<?php foreach ( $field as $f ) : ?>
<?php $f = apply_filters( ’display_field’, $f ); ?>
<?php do_action( ’before_display_field’, $f ); ?>
<input
name="<?php echo $f[’name’]; ?>"
type="<?php echo $f[’type’]; ?>"
value="<?php echo $f[’value’]; ?>" />
<?php do_action( ’after_display_field’, $f ); ?>
<?php endforeach; ?>
<?php do_action( ’before_submit’ ); ?>
<input type="submit" value="Enviar" />
</form>
Vinicius Massuchetto Plugins no WordPress
50. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Adicionando scripts
Errado
No tema:
<html>
<head>
...
<script type="text/javascript" src="script.js" />
</head>
Vinicius Massuchetto Plugins no WordPress
51. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Adicionando scripts
Errado
function custom_scripts() {
<script type="text/javascript" src="script.js" />
<script type="text/javascript">
someCall();
</script>
}
add_action( ’custom_scripts’, ’wp_head’ );
Vinicius Massuchetto Plugins no WordPress
52. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Enfileiradores de scripts
¸˜
Funcoes:
wp enqueue script
wp enqueue style
wp localize script
Hooks:
wp enqueue scripts
admin enqueue scripts
Vinicius Massuchetto Plugins no WordPress
53. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Incluindo scripts
function custom_scripts() {
wp_enqueue_script( ’jquery’ );
wp_enqueue_script( ’my_script’,
’my_script.js’, array( ’jquery’ ) );
}
add_action( ’wp_enqueue_scripts’, ’custom_scripts’ );
Vinicius Massuchetto Plugins no WordPress
54. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
´
Incluindo scripts com variaveis
function custom_scripts() {
wp_enqueue_script( ’jquery’ );
wp_enqueue_script( ’my_script’,
’my_script.js’, array( ’jquery’ ) );
$params = array(
’key1’ => ’val1’,
’key2’ => ’val2’
);
wp_localize_script( ’my_plugin’, ’params’, $params );
}
add_action( ’wp_enqueue_scripts’, ’custom_scripts’ );
Vinicius Massuchetto Plugins no WordPress
55. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
´
Incluindo scripts com variaveis: resultado
<script .. jquery.js .. ></script>
<script type="text/javascript">
/* <![CDATA[ */
var params = {"key1":"val1","key2":"val2"};
/* ]]> */
</script>
<script .. my_script.js .. ></script>
Vinicius Massuchetto Plugins no WordPress
56. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Vinicius Massuchetto Plugins no WordPress
57. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
¸˜
Internacionalizacao
¸˜
Usar funcoes () e e()
Carregar o arquivo MO
Vinicius Massuchetto Plugins no WordPress
58. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
¸˜
Internacionalizacao
echo __( ’String a ser traduzida’, ’plugin_textdomain’ );
_e( ’String a ser traduzida’, ’plugin_textdomain’ );
printf(
__( ’String com um valor %s qualquer no meio’,
’plugin_textdomain’ ),
$string
);
Vinicius Massuchetto Plugins no WordPress
59. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
¸˜
Internacionalizacao
function plugin_textdomain() {
load_plugin_textdomain( ’plugin_textdomain’, false,
dirname( plugin_basename( __FILE__ ) ) . ’/lang/’ );
}
add_action( ’plugins_loaded’, ’plugin_textdomain’ );
Vinicius Massuchetto Plugins no WordPress
60. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Tratamento de Erros
Vinicius Massuchetto Plugins no WordPress
61. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Tratamento de erros
¸˜
Instanciacoes da WP Error
¸˜
Verificacao com is wp error
Utilizar a wp die para morrer elegantemente
Vinicius Massuchetto Plugins no WordPress
62. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Tratamento de erros
function some_func( $param ) {
$error = false;
if ( ! empty( $param ) )
$error = new WP_Error( ’plugin_name’,
sprintf( __( ’Parametro %1$s invalido no arquivo
%2$s linha %3$s.’,
’plugin_textdomain’ ),
’$param’, __FILE__, __LINE__ ) );
if ( is_wp_error ( $error ) )
wp_die ( $error, ’Argumento invalido.’ );
/* func */
}
Vinicius Massuchetto Plugins no WordPress
63. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Tratamento de erros com objetos
class Some_Plugin {
var $error;
function Some_Plugin() {
$this->error = new WP_Error ( ’plugin_name’ );
/* hooks */
}
}
Vinicius Massuchetto Plugins no WordPress
64. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
¸˜ ´
Classes e Funcoes Uteis
Vinicius Massuchetto Plugins no WordPress
65. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
¸˜
Manipulacao de Dados
wp parse args
wp list filter
Vinicius Massuchetto Plugins no WordPress
66. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
¸˜
Formatacao
is email
remove accents
sanitize title
sanitize email
seems utf8
zeroise
wptexturize
Vinicius Massuchetto Plugins no WordPress
67. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Transients API
set transient
get transient
delete transient
Vinicius Massuchetto Plugins no WordPress
68. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
HTTP API
wp remote get
wp remote retrieve body
wp remote retrieve headers
Vinicius Massuchetto Plugins no WordPress
69. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Object Cache
wp cache add
wp cache set
wp cache get
wp cache delete
wp cache flush
Vinicius Massuchetto Plugins no WordPress
70. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Cron
wp schedule event
wp schedule single event
wp unschedule event
wp next scheduled
Vinicius Massuchetto Plugins no WordPress
71. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
´
Classes Uteis
SimplePie
PHPMailer
Vinicius Massuchetto Plugins no WordPress
72. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
¸˜ ´
Funcoes Uteis
wp mail
fetch feed
human time diff
Vinicius Massuchetto Plugins no WordPress
73. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Liberando na comunidade
Vinicius Massuchetto Plugins no WordPress
74. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Liberando na comunidade
´
Requerer hospedagem no repositorio SVN oficial
¸˜
Escrever a documentacao
¸˜
Fazer uma imagem de apresentacao
¸˜ ¸˜
Avaliar requisicoes de suporte e gerenciar traducoes
Vinicius Massuchetto Plugins no WordPress
75. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
readme.txt de um plugin
=== Plugin Name ===
== Description ==
== Installation ==
== Frequently Asked Questions ==
== Screenshots ==
== Changelog ==
== Arbitrary section ==
Vinicius Massuchetto Plugins no WordPress
76. Estrutura
¸˜
Introducao
Interfaces
˜
Padroes
Scripts e Estilos
Desenvolvimento
Ferramentas
¸˜
Consideracoes Finais
Liberando na Comunidade
Vinicius Massuchetto Plugins no WordPress
77. ¸˜
Introducao
˜
Padroes
Desenvolvimento
¸˜
Consideracoes Finais
¸˜
Consideracoes Finais
Interfaces altamente flex´veis
ı
Conjunto de ferramentas amplo e dispon´vel
ı
´ ` ¸˜
Facil acesso as informacoes pelo desenvolvedor
˜ ˜
Nao tem desculpa para nao codificar e suportar um plugin
com qualidade
Vinicius Massuchetto Plugins no WordPress
78. ¸˜
Introducao
˜
Padroes
Desenvolvimento
¸˜
Consideracoes Finais
Vinicius Massuchetto Plugins no WordPress
79. ¸˜
Introducao
˜
Padroes
Desenvolvimento
¸˜
Consideracoes Finais
ˆ
Referencias
Codex: Writing a Plugins
http://codex.wordpress.org/Writing_a_Plugin
WordPress Answers
http://wordpress.stackexchange.com/questions/715/
objective-best-practices-for-plugin-development
Vinicius Massuchetto Plugins no WordPress