O WordPress oferece uma forma simples, segura e bastante ‘clean’ de misturar códigos PHP dentro de posts/páginas por meio da Shortcode API. Funciona da seguinte forma:
- Crie uma função no arquivo de funções do tema, o functions.php
- Evoque a função registrada dentro do post/página envolvida por [] (colchetes)
- O WordPress substituirá o shortcode pelo retorno da função
Um problema: criar uma shortcode que exibe a data e hora atual do servidor.
function datahora() { return date('d/m/Y HH:ii'); } add_shortcode('Datahora', 'datahora');
A nossa função não poderia ser mais simples. Mas ela precisa ser registrada para que o WordPress a reconheça. Quem faz isso é a função add_shortcode(nome_da_shorttag, nome_da_funcao_php).
Pronto, agora basta criar um post com o conteúdo:
[Datahora]
Inserindo parâmetros
Parâmetros podem ser usados para refinar um shortcode.
Um problema: inserir um mapa navegável, do Google Maps diretamente em nosso post.
Vamos escrever a função preparada para receber os parâmetros latitude/longitude, altura e largura do mapa.
function mapa($atributos) { extract( shortcode_atts(array( 'll' => '-15.570624,-56.087179', 'altura' => 452, 'largura' => 350 ), $atributos)); return "<iframe width="'.$largura.'" height="'.$altura.'" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/?ie=UTF8& ll='.$ll.'&spn=0.014469,0.018239 &z=15&output=embed"></iframe>"; } add_shortcode('Gmap', 'mapa');
A nossa função mapa receberá um parâmetro que equivale a um array com os valores vindos do post. Perceba que a primeira coisa que fazemos é tratar os parâmetros com as funções extract e shortcode_atts. A primeira é uma função PHP que converte as chaves de um array em nome de varável. Ex:
$arr = Array('nome' => 'Thiago', 'pais'=>'Brasil'); extract($arr); echo $nome // Thiago echo $pais; // Brasil
E shortcode_atts garante que os parâmetros não declarados no post terão um valor padrão, sendo assim, nenhum parâmetro é obrigatório. Vamos aplicar nosso mapa no post pra entender melhor.
[Gmap largura=650 altura=400]
Nosso mapa será renderizado no post com altura = 400 e largura = 650. Como não declaramos latitude/longitude (ll), o valor padrão a ser asumido será a coordenada -15.570624,-56.087179.
Partes do post como parâmetro
Nos exemplos acima usamos shortcodes auto-encapsuladas. Pense como tags XHTML (<br />, <img />). Podemos usar o próprio texto do post como parâmetro. Pra isso precisamos apenas encapsular esse texto com a shortcode, abrindo e fechando. Em nossa função PHP corresponderá ao nosso segundo parâmetro.
Um problema: converter pedaços do nosso post em maÃusculo.
function upper($atts, $conteudo) { return strtoupper($conteudo); } add_shortcode('upper-case', 'upper');
No post:
Quero somente [upper-case]esse pedaço do texto[/upper-case] em maÃusculo
É bom saber que:
- shortcode_atts converte os atributos em minúsculo, então é melhor padronizar;
- usar sempre return e não echo na função PHP. Evite que coisas estranhas aconteçam;
- existe um terceiro parâmetro para as funções, usado para chamadas calbacks.
Referências:
Sobre o autor:
Thiago Bussiki
Graduado em Desenvolvimento de Sistemas, Pós-graduando em Design de Interação pelo Instituto Faber-Ludens. Programador PHP desde 2000. Desenvolve projetos em: Ruby on Rails, Flex, Wordpress, Symfony entre outros. Mais informações no LinkedIn. Siga-me no Twitter.
