Por vezes os blogueiros e donos de sites em WordPress necessitam de criar determinadas funcionalidades especificas para apenas um site. Desde mudar apenas a ordem do menu da administração a criar uma funcionalidade mais especifica no frontend, tal como desabilitar a barra de administração para determinados tipos de usuários, são muitos os tutoriais que você pode encontrar pela internet que acompanham pequenos snippets pedindo para colocar no functions.php do tema do seu blog.

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 blog ou site no functions.php do seu tema atual não é a melhor solução. No entanto existem boas notícias: plugins especificos são uma alternativa mais prática e inteligente de colocar snippets de código no seu site!

Crie plugins especificos para o seu blog ou site

Imagine que você lê 3 tutoriais aqui no Escola WP e que incorpora 3 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ê quererá experimentar vários temas com esses códigos. A solução é criar um plugin específico para cada um dos snippets.

Poderá olhar para um plugin de funcionalidade como um functions.php portável e específico

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 nele código, 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 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 isto, estará a salvaguardar 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 de decidir se deve ou não criar um plugin para determinada funcionalidade em vez de a colocar no functions.php, pense nessa funcionalidade a longo-prazo: decida se essa funcionalidade será constante no seu site, se irá prolongar-se caso você mude de tema, por exemplo, se essa funcionalidade daqui a 5 anos 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 é especifica do site ou especifica 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.

Peguemos no 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ê quererá ter acesso a elas por muito tempo, nem que seja pelo painel de administração do site. Estamos a falar 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 trata-se 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 ao 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 thumbnail e adiciona um novo tamanho de imagem para o blog. O que encontramos aqui pode ser visto como dois lados de uma mesma moeda. Se virmos de uma perspetiva, 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 se formos ver de uma outra perspetiva, quando você carrega imagens para o seu blog, o WordPress encarrega-se de criar os vários tamanhos definidos pela função add_image_size() e guardá-los no disco. Um determinado tema tem tamanhos de thumbnails específicos para esse tema, no entanto se você alterar o tema quase de 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 ao critério de cada blogueiro. Se preferir 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 regista posições para menu de navegação. Essas posições dependem do tema em que estamos a trabalhar, 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 regista 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 a falar de duas funções muito globais cuja sua função é registar ficheiros javascript e css no frontend do site. Isto depende bastante do que estamos a querer implementar. Se o nosso script for alterar a aparência de um determinado elemento do website, então deve ser registado 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 dificil, é até bastante simples. Se você entendeu tudo o que estava acima escrito, 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, criado pelo colega Diogo Espinha, 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 ficheiro de plugin

Todos os plugins encontram-se na diretoria wp-content/plugins/ do WordPress e é aí que vamos criar uma nova subdiretoria denominada custom-branding. Esta subdiretoria irá albergar todos os ficheiros do nosso plugin que irá personalizar o formulário de login do WordPress.

Criemos agora, dentro dessa subdiretoria um ficheiro 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 o desativar.

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

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

Não me alongando a explicar como estes códigos estão implemntados, pois está tudo explicado no artigo do Diogo, iremos apenas copiar o conteúdo e colocar tudo dentro do ficheiro de plugin que criámos:

<?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 noutros blogs. 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:

{filelink=3}

Criámos 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 o ajudar a decidir para que funcionalidades deve ou não criar um plugin específico ou usar o functions.php, decidimos fazer 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!