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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Claudio Sanches
November 23, 2013
Programming
1.6k
8
Share
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
100
Aprenda a desenvolver plugins no WordPress
claudiosanches
0
2.4k
Introdução a tradução do WordPress em português brasileiro
claudiosanches
0
260
WordPress como base de aplicações
claudiosanches
0
180
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
260
Aprenda a criar uma loja com o WooCommerce
claudiosanches
7
2.7k
Other Decks in Programming
See All in Programming
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
16
5.6k
おれのAgentic Coding 2026/03
tsukasagr
1
150
Running Swift without an OS
kishikawakatsumi
0
840
Back to the roots of date
jinroq
0
230
Coding at the Speed of Thought: The New Era of Symfony Docker
dunglas
0
5k
LM Linkで(非力な!)ノートPCでローカルLLM
seosoft
0
500
Lightning-Fast Method Calls with Ruby 4.1 ZJIT / RubyKaigi 2026
k0kubun
3
430
The Monolith Strikes Back: Why AI Agents ❤️ Rails Monoliths
serradura
0
340
AWSコミュニティ活動は顧客のクラウド推進に効くのか / Do AWS community activities help customers adopt the cloud?
seike460
PRO
0
140
10年分の技術的負債、完済へ ― Claude Code主導のAI駆動開発でスポーツブルを丸ごとリプレイスした話
takuya_houshima
0
2.6k
JOAI2026 1st solution - heron0519 -
heron0519
0
140
PHP で mp3 プレイヤーを実装しよう
m3m0r7
PRO
0
280
Featured
See All Featured
Joys of Absence: A Defence of Solitary Play
codingconduct
1
350
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
220
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
My Coaching Mixtape
mlcsv
0
100
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.2k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.6k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
140
Raft: Consensus for Rubyists
vanstee
141
7.4k
The untapped power of vector embeddings
frankvandijk
2
1.7k
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