Quantcast
Channel: iMasters - Paulo Faustino
Viewing all articles
Browse latest Browse all 20

Como criar plugins específicos para o seu site WordPress

$
0
0

Quem trabalha com WordPress às vezes precisa criar determinadas funcionalidades específicas para apenas um site. Desde mudar apenas a ordem do menu da administração até uma funcionalidade mais específica no frontend, tal como desabilitar a barra de administração para determinados tipos de usuários, são muitos os artigos que você pode encontrar pela internet que acompanham pequenos snippets pedindo para colocar no functions.php do tema do seu site.

O que por vezes pode ser uma solução também pode ser uma dor de cabeça na hora de trocar o seu tema ou quando este se atualiza automaticamente a partir do diretório de temas. Colocar snippets de código que irão influenciar criticamente o seu site no functions.php do seu tema atual não é a melhor solução. No entanto, existem boas notícias: plugins específicos são uma alternativa mais prática e inteligente de colocar snippets de código no seu site!

Imagine que você lê três artigos diferentes e incorpora três códigos que darão novas funcionalidades ao seu site. Estes códigos são completamente independentes uns dos outros. Imagine também que você queira experimentar vários temas com esses códigos. A solução é criar um plugin específico para cada um dos snippets.

Criar um plugin não é dificil, porém requer algum conhecimento de PHP e WordPress. Se você já editou algum functions.php de um tema colocando código nele, então você conseguirá com toda a certeza também criar um plugin específico. Poderá olhar para este tipo de plugin como um functions.php portável e específico. É certo que demorará mais tempo criar plugins por cada funcionalidade, no entanto você terá a certeza de que:

  1. Se o seu tema atualizar ou você trocar de tema, as funcionalidades não quebrarão
  2. Se você quiser desativar uma funcionalidade especifica, você poderá apenas desativar o plugin no painel de administração, em vez de ter que logar-se no seu FTP, navegar até ao seu tema e comentar todo o código respeitante à funcionalidade que você pretende desativar
  3. Se você quiser atualizar o código para uma nova versão, você não terá que andar mais à procura. Já sabe o que atualizar!

Como vê, usar plugins específicos acaba por ser bastante vantajoso!

Em resumo, plugins específicos deverão conter todo e qualquer código que seja importante para a funcionalidade do seu site. Ao fazer isso, estará protegendo o seu código se eventualmente mudar de tema ou acidentalmente atualizá-lo.

O que deve ir para um plugin específico?

Quase todas as adições de funcionalidade devem ir para um plugin específico! No entanto, se você precisa decidir se deve ou não criar um plugin para determinada funcionalidade em vez de colocá-la no functions.php, pense nessa funcionalidade a longo prazo: decida se ela será constante no seu site, se irá prolongar-se caso você mude de tema, por exemplo, se daqui a 5 anos essa funcionalidade continuará a ser útil para o seu site ou blog, mesmo se o seu layout se alterar por completo. A chave para a solução aqui é perceber se a funcionalidade é específica do site ou específica do layout, e por consequinte do tema.

Por cada funcionalidade deveremos pensar se esta será necessária daqui a algum tempo ou não. Ficam aqui a título de exemplo algumas possíveis funcionalidades que você poderia querer adicionar no seu blog:

  • register_post_type() e register_taxonomy(), para a criação de tipos de post e de categorias customizadas.
  • add_shortcode(), para criação de shortcodes para gestão de conteúdo.
  • add_theme_support( 'post-thumbnails' ) e add_image_size() para ativar thumbnails e criar um tamanho de imagem.

Vejamos o primeiro exemplo da lista. Essas duas funções adicionam um novo tipo de conteúdo ao seu site e, por isso, com toda a certeza você vai querer ter acesso a elas por muito tempo, nem que seja pelo painel de administração do site. Estamos falando do conteúdo do seu site que não deve ser determinado pelo tema que você tem instalado no momento, sendo assim, este é o exemplo ideal daquilo que deve ir para um plugin, e não para o functions.php de um tema.

O segundo exemplo é de uma função que adiciona uma shortcode ao seu site. Basicamente, manipula o conteúdo de um post. Caso este contenha a shortcode indicada na função, ele substitui esse conteúdo pelo conteúdo fornecido na função. Deste modo, encontramos aqui uma manipulação no nível do conteúdo, e mais uma vez um novo plugin deve ser criado.

Agora, peguemos no terceiro exemplo da lista que ativa os thumbnails e adiciona um novo tamanho de imagem para o site. O que encontramos aqui pode ser visto como dois lados de uma mesma moeda: em um lado, o tamanho de imagem e a ativação de thumbnails num tema à primeira vista pode ser visto como específico de um tema e não de um site, pois o tamanho da imagem, por exemplo, depende do layout do tema.

No entanto, vendo de uma outra perspetiva, quando você carrega imagens para o seu site, o WordPress encarrega-se de criar os vários tamanhos definidos pela função add_image_size() e os guarda no disco. Um determinado tema tem tamanhos de thumbnails específicos, no entanto se você alterar o tema quase com certeza que haverá outros tamanhos de imagem. Conclusão: todas as imagens anteriormente carregadas pelo WordPress estão com os tamanhos específicos do tema anterior e não do atual. Este é o caso que deixo a seu critério: colocar no functions.php ou deixar num plugin em separado.

O que deve ir para o functions.php

Basicamente tudo o que tenha a ver com aparência do seu site deve ir para o functions.php. Ficam aqui 3 exemplos de funções que se encaixam neste conceito:

  • register_nav_menus()
  • register_sidebar()
  • wp_enqueue_script() and wp_enqueue_style()

O primeiro exemplo registra posições para menu de navegação. Essas posições dependem do tema em que estamos trabalhando, assim este é o caso em que o código deve ir para o functions.php do seu tema, pois ao alterar de tema muito provavelmente as posições do tema serão outras e o uso de um plugin para este caso poderia quebrar a navegação.

O segundo exemplo, assim como o primeiro, também deve ser considerado como específico do tema. Esta função registra posições de barras laterais do tema atual, desta forma é específica do tema.

A terceira situação da lista deve ser encarada no seu contexto, pois estamos falando de duas funções muito globais cuja função é registrar arquivos javascript e css no frontend do site. Isto depende bastante do que queremos implementar. Se o nosso script for alterar a aparência de um determinado elemento do website, então deve ser registrado no functions.php. No caso em que, por exemplo, queira-se alterar um determinado elemento de um plugin ou da barra de administração, então a melhor solução será criar um plugin específico de maneira a não quebrar as nossas alterações.

Como criar o seu plugin

Criar um plugin não é tarefa difícil, é até bastante simples. Se você entendeu tudo o que estava escrito acima, você percebeu então que um plugin específico pode ser entendido como uma extensão do functions.php.

Pegando em snippets de código do artigo Personalizando o Painel de Administração do WordPress para os seus Clientes, vamos começar com um exemplo muito simples, criando um plugin que irá apenas alterar o logotipo do formulário de login do WordPress.

1. Criar o arquivo de plugin

Todos os plugins encontram-se no diretório wp-content/plugins/ do WordPress e é aí que vamos criar um novo subdiretório denominado custom-branding. Este subdiretório irá abrigar todos os arquivos do nosso plugin que irá personalizar o formulário de login do WordPress.

Criemos agora, dentro desse subdiretório, um arquivo chamado custom-branding.php e vamos editá-lo de modo a inserir o seguinte conteúdo:

<?php

/*
Plugin Name: Custom Branding
Description: Personalizar o formulário de login
Version: 0.1
License: GPL
Author: Vitor Carvalho
Author URI: http://www.escolawp.com/
*/

// Os snippets de código virão aqui

Este será o conteúdo inicial do seu plugin para que o WordPress possa reconhecê-lo como plugin. Neste momento, se se dirigir ao painel de administração, no menu Plugins, você encontrará este plugin listado. Se o ativar, obviamente ele não fará nada, pois neste momento não tem nenhum código PHP associado, no entanto você poderá editá-lo posteriormente, sempre que pretender, sem ter que desativá-lo.

Viu como é fácil criar um plugin? Agora todo o resto é apenas uma questão de colocar os snippets de código dentro deste arquivo.

2. Código para customizar o formulário de login

Não vou me alongar explicando como estes códigos estão implementados. Iremos apenas copiar o conteúdo e colocar tudo dentro do arquivo de plugin que criamos:

<?php

/*
Plugin Name: Custom Branding
Description: Personalizar o formulário de login
Version: 0.1
License: GPL
Author: Vitor Carvalho
Author URI: http://www.escolawp.com/
*/

function meu_logo_login(){
echo '<style type="text/css"> h1 a { background-image:url('.get_bloginfo('template_directory').'/images/eplus.png) !important; } </style>';

}
add_action('login_head', 'meu_logo_login');

function alt_login_url(){
echo bloginfo('url');

}
add_filter('login_headerurl', 'change_wp_login_url');

function alt_login_title(){
echo get_option('blogname');

}
add_filter('login_headertitle', 'change_wp_login_title');

function alt_admin_footer (){
echo '<span id="footer-thankyou">Desenvolvido por <a href="http://www.escolasplus.com" target="_blank">Escolas Plus</a></span>';

}
add_filter('admin_footer_text', 'alt_admin_footer');

E pronto, este é o plugin que você poderá ativar e desativar sempre que quiser. Poderá compartilhá-lo com os seus colegas e colocar em outros sites. Estas são as vantagens de ter um plugin específico para cada funcionalidade do seu site.

Faça o download do Plugin inicial para desenvolvimento:

Criamos este plugin inicial para o ajudar no desenvolvimento do(s) seu(s) próximo(s) plugin(s) para o seu site. Faça o download!

Lista de funcionalidades

Para ajudá-lo a decidir para quais funcionalidades deve ou não criar um plugin específico ou usar o functions.php, fiz um sumário das funcionalidades mais usadas e, dependo do contexto, onde deve ser colocado:

  • Criar novas shortcodes: Sempre num novo plugin
  • Adicionar scripts e css: Depende do contexto
  • Criar sidebars e menus: Sempre no functions.php
  • Adicionar tipos de post e categorias: Sempre num novo plugin
  • Adicionar tamanhos de image: Depende do ritmo de mudança do tema
  • Código do Google Analytics: Sempre num novo plugin
  • Customizar a Administração: Sempre num novo plugin
  • Modificar um Gravatar: Sempre num novo plugin
  • Criar campos personalizados de perfil: Sempre num novo plugin

Existem muitos outros exemplos que poderiam ser colocados aqui, no entanto estes já devem lhe dar uma visão mais holística do que se deve ou não colocar num functions.php.

Espero que este artigo o tenha ajudado a ser o próximo mestre em plugins para o seu site. 

Até breve!


Viewing all articles
Browse latest Browse all 20