Plugins e PHP no WordPress

A programação PHP (Hypertext Preprocessor) é realizada no servidor da página (diferentemente do javascript). Por razões de segurança, o WordPress não permite utilizar códigos PHP diretamente no post ou página. Porém, existem alternativas, como os plugins, estejam eles prontos ou você mesmo pode fazer um e disponibilizá-lo para a comunidade.

plugins_wp

Caso queira implementar alguma função que não venha no código original do WordPress, você poderá implementar as novas funcionalidades utilizando um plugin. Os plugins são ferramentas para estender a funcionalidade do WordPress. São incluídos diretórios em "wp-content/plugins" com o nome do plugin e os códigos e informações correspondentes, mas facilmente instalados através de interface gráfica do painel de controle do wordpress. Possui um campo de busca no repositório oficial (mas podem ser instalados diretamente), e possuem o recurso de ativar/desativar, para evitar instalar/desisnstalar o tempo todo, perdendo suas personalizações.

Caso queira que a página execute uma função utilizando PHP, não poderá ser feito diretamente no post ou página. Existem plugins que trabalham no sentido de permitir a execução do PHP, como o Allow PHP in Posts and Pages, ou também criando shortcodes, como o PHP Code for Posts and Pages. O shortcode é uma forma simples, segura e bastante "limpa" de misturar pedaços códigos PHP dentro de posts ou páginas.

Um grande problema que enfrentei tentando usar esses plugins foi o conflito com outro plugin, o SyntaxHighlighter Evolved. Responsável por postar códigos de diferentes linguagens utilizando cores e formatações próprios, é muito útil para visualizar um código postado no WordPress. Assim, para implementar as funções PHP que eu desejava (e que não tinham nenhum plugin que me satisfizesse nesse sentido), decidi fazer o meu próprio plugin.

Criando um plugin

O objetivo do meu plugin é o de imprimir a hora na qual o usuário abriu o post para leitura, no formato "UTC-3" e em Internet Time. A função time() retorna o horário atual em unix time e idate converte para outros formatos (no caso, o parâmetro B converte para Swatch Beat/Internet Time, H para horas e i para minutos). Assim, o comando em PHP (para um dos casos) é o seguinte:

idate('B', time())

Podemos também incluir HTML/CSS e deixar o resultado mais "apresentável" na página. Juntando tudo, temos:

  date_default_timezone_set('Brazil/East');
  echo '

<div style="text-shadow: #21759b 1px 1px 1px; border: #000 1px solid;text-align:center;font-size:large;">

Você começou a ler esse post às

Hora (UTC-3): <strong>'.date('H').':'.date('i').'</strong> | Internet time: <strong>@'.idate('B', time()).'</strong>
</div>


';

Note que foi definido o horário para "Brazil/East" (ou seja, UTC-3). Para finalizar o código PHP do plugin, foi inserida a função "add_shortcode", que permite incluir um simples shortcode para executar o plugin no post. Ou seja, bastará deixar no post o texto a seguir para executar o plugin (sem as barras invertidas):

\[\internet_time\]\

Assim, o código final é o seguinte:

add_shortcode( 'internet_time', 'itime' );
 
function itime() {
  date_default_timezone_set('Brazil/East');
  echo '

<div style="text-shadow: #21759b 1px 1px 1px; border: #000 1px solid;text-align:center;font-size:large;">

Você começou a ler esse post às

Hora (UTC-3): <strong>'.date('H').':'.date('i').'</strong> | Internet time: <strong>@'.idate('B', time()).'</strong>
</div>


';
}

Para esse código poder ser chamado de plugin, deverá incluir algumas "burocracias". No mesmo arquivo, junto com o início código, inclua um cabeçalho com as seguintes informações e licença:

/*
Plugin Name: NOME DO PLUGIN
Plugin URI: SITE DO PLUGIN
Description: DESCRIÇÃO
Version: 1.0 (OU OUTRA)
Author: NOME/NICK DO AUTOR
Author URI: PÁGINA DO AUTOR
License: GPLv2

 *      Copyright ANO AUTOR <E-MAIL/COMTATO DO AUTOR>
 *
 *      This program is free software; you can redistribute it and/or modify
 *      it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation; either version 3 of the License, or
 *      (at your option) any later version.
 *
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 *
 *      You should have received a copy of the GNU General Public License
 *      along with this program; if not, write to the Free Software
 *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 *      MA 02110-1301, USA.
 */

Lembrando, o asterisco antecedido/precedido de barra indica os intervalos do comentário no PHP, e o código deve estar limitado por sinais de maior/menor unido de ponto de interrogação.

Crie também um arquivo de ajuda, chamado "readme.txt", onde você deverá incluir informações divididas por setores. Criei também um arquivo com as informações de licença. Os modelos podem ser obtidos no site Como criar blog.

Publicando no repositório

Se deixar uma pasta com o nome do plugin no "wp-content/plugins", já vai aparecer o plugin instalado com todas as informações no seu painel de controle, bastando apenas ativá-lo e utilizá-lo. Caso queira que o seu plugin faça parte do repositório oficial do wordpress, você deverá requisitar uma permissão de acesso ao repositório de plugins (página WP Repository Request wordpress.org/extend/plugins/add). Para isso, você deverá ter um cadastro no site wordpress.org. Cadastre-se (ou logue-se) e envie as informações solicitadas referentes ao seu plugin. Algum tempo depois (horas ou poucos dias) eles retornam dizendo se o plugin foi aprovado ou não e o endereço do plugin na internet.

Para trabalhar com o seu plugin no repositório, você deverá utilizar um sistema de subversion. Subversion, também conhecido por svn, é um sistema de controle de versão. Ou seja, cada alteração realizada e submetida de código será uma nova versão do seu programa. Isso permite que muitas pessoas atualizem o código, formando diferentes versões, e haja um controle melhor do que foi realizado em cada etapa.

Caso esteja usando Linux, instale o pacote "subversion", que inclui o cliente Subversion (svn), ferramentas para criar um repositório Subversion (svnadmin) e para tornar um repositório disponível em uma rede (svnserve). Depois, crie uma pasta com o nome do seu plugin e execute o comando (1ª linha mais abaixo) para essa pasta para dar o "check out" do repositório. Copie os arquivos para a pasta "trunk" e depois as adicione no repositório usando o comando da 2ª linha. Finalmente, transmita tudo de volta para o repositório usando da última linha. Para atualizar, basta executar os mesmos comandos, exceto o de adicionar a pasta:

# Check out do repositório
svn co http://endereco_enviado_por_e-mail_com_nome_do_plugin/
# Adicionar pasta ao repositório (somente para primeiro upload)
svn add pasta
# Mudar para diretório com arquivos
cd nome_do_plugin
# Atualizar arquivos
svn ci -m 'Mensagem para identificar o que foi feito nessa mudança'

Cada envio de diferente versão será emitido um e-mail para você com as alterações realizadas. O procedimento apresentado está explicado também no site "How to Use Subversion" do wordpress.org, inclusive mostrando também como fazer as atualizações. Dessa forma, o plugin agora está no repositório, e o nosso exemplo também é acessível pelo seguinte endereço: http://wordpress.org/plugins/internet-time/.

Veja uma aplicação desse plugin no post sobre Sistema internacional de unidades e Tempo decimal. Saiba mais sobre WordPress clicando nesse link.

Compartilhe o link desse texto, mas se for copiar algum trecho, cite a fonte. Valorize nosso trabalho.
Mais informações na licença de uso do site.

4 Pingbacks/Trackbacks