Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Não é porque funcionou que significa que esta c...
Search
Claudio Sanches
November 23, 2013
Programming
1.6k
8
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Não é porque funcionou que significa que esta certo!
Boas práticas de programação no WordPress.
WordCamp São Paulo 2013.
Claudio Sanches
November 23, 2013
More Decks by Claudio Sanches
See All by Claudio Sanches
Desenvolvimento moderno de plugins para WordPress
claudiosanches
1
110
Aprenda a desenvolver plugins no WordPress
claudiosanches
0
2.4k
Introdução a tradução do WordPress em português brasileiro
claudiosanches
0
270
WordPress como base de aplicações
claudiosanches
0
190
Trabalhando com a API Rest e Webhooks do WooCommerce
claudiosanches
1
1.1k
E-Commercers com WooCommerce - CPBR8
claudiosanches
2
310
Montando uma plataforma de vendas com WooCommerce
claudiosanches
0
230
WooCommerce como solução para pequenos e grandes e-commerces
claudiosanches
2
270
Aprenda a criar uma loja com o WooCommerce
claudiosanches
7
2.7k
Other Decks in Programming
See All in Programming
これって Effect でできたのでは? / TSKaigi Mashup Kansai #2
susisu
0
140
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.8k
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.7k
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
Google Apps Script で Ruby を動かす
kawahara
0
130
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
130
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
1
1.4k
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
570
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
1
200
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
260
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
140
yield再入門 #phpcon
o0h
PRO
0
940
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
400
How to train your dragon (web standard)
notwaldorf
97
6.7k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
650
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
The Spectacular Lies of Maps
axbom
PRO
1
890
The Limits of Empathy - UXLibs8
cassininazir
1
590
Visualization
eitanlees
152
17k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
510
Transcript
Não é porque funcionou que significa que esta certo! Boas
práticas de programação no WordPress
Atualmente temos mais 28 mil plugins e 2 mil temas
no repositório oficial do WordPress. Somando com plugins e temas pagos, projetos pessoais, snippets e etc, chegamos em um número incontável de linhas de código escritos por diversas pessoas ao redor do mundo.
E o resultado disso muitas vezes é o CAOS!
Este CAOS existe porque não basta apenas saber programar em
PHP e JavaScript para trabalhar com WordPress. É necessário conhecer o WordPress, os seus padrões de código e boas práticas de desenvolvimento.
Não importa se você desenvolve projetos Open Source ou não!
Um dia você vai precisar dar manutenção no projeto ou morrer (e ai alguém vai assumir o filho no lugar)...
O seu código ganha: • Legibilidade • Durabilidade • Compatibilidade
• Segurança • Fácil manutenção Com padrões e boas práticas
O WordPress tem o seu próprio padrão de código que
esta documentado em "Make WordPress Core Handbook". Os padrões estão dividos em 4 partes, sendo elas CSS, HTML, JavaScript e PHP.
Padrões de Código (Coding Standards)
• Indentação com tab (\t) e não com 4 espaços
(\s\s\s\s) • Espaçamento para melhorar a legibilidade Regras gerais
#az-1, .bd_2 { background:#ffffff; color:#000000 } #x-12 {background:#fff;color:#000} CSS -
Errado
#comment-form, .comment, .entry-content { background: #fff; color: #000; } CSS
- Certo
<input TYPE=text name=email disabled> <BR/> <?php if ( ! have_posts()
) : ?> <div id="post-1" class="post"> <H1 CLASS="entry-title">Oi Mundo!</H1> </div> <?php endif; ?> HTML - Errado
<input type="text" name="email" disabled=" disabled"> <br /> <?php if (
! have_posts() ) : ?> <div id="post-1" class="post"> <h1 class="entry-title">Oi Mundo!</h1> </div> <?php endif; ?> HTML - Certo
var map = { ready: 9, 'you are': 15 };
for(i=0;i<100;i++){ ul.append('<li>VT é chato vezes '+i+'</li>'); } JavaScript - Errado
var map = { ready: 9, 'you are': 15 };
for( i = 0; i < 100; i++ ){ ul.append( '<li>VT é chato vezes ' + i + '</li>' ); } JavaScript - Certo
<?= $var ?> echo "<a href=\"http://wordpress.org/\" >WordPress</a>"; if(condition) functionExample2($param1,$param2); else
new classExample($param); PHP - Errado
<?php echo $var; ?> echo "<a href=\"$url\">WordPress</a>"; if ( condition
) { function_example_1( $param1, $param2 ); } else { new Class_Example($param); } PHP - Certo
Padrões de Projeto (Design Patterns)
is_home() is_front_page() is_single() is_page() is_category() is_admin() wp_is_mobile() … Tags Condicionais
(Conditional tags)
add_filter( 'the_content', 'example' ) apply_filters( 'your_filter', $param1, $param2, $param3, $etc...
) add_action( 'publish_post', 'example' ) do_action( 'your_action', [$params...] ) Filtros e Ganchos (filters and actions)
NÃO USE query_posts()! Loops principais devem ser alterados pelo gancho
pre_get_posts. E os secundários devem ser feitos usando WP_Query. Query/Loop de posts
function exclude_category( $query ) { if ( $query->is_home() && $query-
>is_main_query() ) { $query->set( 'cat', '-1,-1347' ); } } add_action( 'pre_get_posts', 'exclude_category' ); Query/Loop de posts
<?php $the_query = new WP_Query( $args ); ?> <?php if
( $the_query->have_posts() ) : ?> <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?> <h2><?php the_title(); ?></h2> <?php endwhile; ?> <?php wp_reset_postdata(); ?> <?php endif; ?> Query/Loop de posts
wp_remote_post( $url, $args ) wp_remote_get( $url, $args ) Argumentos: timeout,
headers, body, method e etc. Conexões Remotas
sanitize_email() sanitize_text_field() sanitize_title() sanitize_title_with_dashes() esc_html() esc_url() esc_attr() esc_js() … Higienização
e validação
NUNCA adicione CSS e Javascript direto do <head> do seu
tema. Todo script deve ser registrado no functions.php usando as funções: wp_enqueue_script() e wp_enqueue_style() CSS e JavaScript
function js_fn() { wp_enqueue_script( 'name', $path . '/js/custom_script.js', array( 'jquery'
) ); } add_action( 'wp_enqueue_scripts', 'js_fn' ); CSS e JavaScript
NUNCA USE JQUERY DO GOOGLE! function js_fn() { wp_enqueue_script( 'jquery'
); } add_action( 'wp_enqueue_scripts', 'js_fn' ); CSS e JavaScript
Forma correta de usar jQuery: jQuery( document ).ready( function( $
) { // agora você pode usar $ aqui! }); (function( $ ) { // $ funciona aqui! })( jQuery ); CSS e JavaScript
Exemplos de funções que substituem plugins: wp_trim_words() paginate_links() wp_extract_urls() Funções
nativas
Toda vez que você ver uma função do WordPress, procure
ela no Codex! Esta é a melhor forma de conhecer e dominar o WordPress.
Dúvidas?
Padrões de código: http://make.wordpress. org/core/handbook/coding-standards/ Links e Referências
Funções: http://codex.wordpress.org/Conditional_Tags http://codex.wordpress. org/Plugin_API/Filter_Reference Links e Referências
http://codex.wordpress. org/Plugin_API/Action_Reference http://codex.wordpress. org/Function_Reference/query_posts http://codex.wordpress. org/Plugin_API/Action_Reference/pre_get_post s Links e Referências
http://codex.wordpress. org/Class_Reference/WP_Query http://codex.wordpress. org/Function_Reference/wp_remote_post http://codex.wordpress. org/Function_Reference/wp_remote_get Links e Referências
http://codex.wordpress. org/Validating_Sanitizing_and_Escaping_User_ Data http://codex.wordpress. org/Function_Reference/wp_enqueue_script http://codex.wordpress. org/Function_Reference/wp_enqueue_style Links e Referências
http://codex.wordpress. org/Function_Reference/wp_trim_words http://codex.wordpress. org/Function_Reference/paginate_links http://queryposts. com/function/wp_extract_urls/ Links e Referências
Este documento esta licenciado com GPLv2. É possível encontrar uma
copia da licença no seguinte link: http://www.gnu.org/licenses/gpl-2.0.txt Licença