De entre todas as novidades de WordPress, ShortCode é uma das que menas importancia foi dada. E a verdade é que vale a pena perder um momento em explicar de que vai esta nova funcionalidade.
BBCode
Os usuários de foruns, conhecem o formato BBCode, aquele composto de tags envoltos por [], similar ao formato HTML. Este formato está muito estendido em internet e é fácil de memorizar. Vejamos um exemplo:
[sourcecode language=”html”][b]Este text en negrita[/b] ==> Este text en negrita[/sourcecode]
Partindo desta base podemos passar a definir que é ShortCode.
ShortCode
ShortCode API, é um conjunto de funções que permite definir nossos próprios tags BBCode para inserí-los dentro de nossos posts. A graça deste sistema é que podemos executar código PHP dentro do conteúdo de nossos posts. O que além de ser muito interessante, evidentemente é muito perigoso.
add_shortcode($tag, $function);
[sourcecode language=”php”]// [footag foo=”bar”]
function footag_func($atts) {
return @”foo = {$atts[‘foo’]}”;
}
// My Caption
function caption_shortcode( $atts, $content = null ) {
extract( shortcode_atts( array(
‘class’ => ‘caption’,
), $atts ) );
return ‘
}
add_shortcode(‘caption’, ‘caption_shortcode’);
add_shortcode(‘footag’, ‘footag_func’);
[/sourcecode]
Se olhamos o código anterior, vemos que o tag BBCode se define mediante a função addshortcode(), encarregada de relacionar o tag com a função correspondente.
remove_shortcode($tag);
Função que nos permite eliminar o funcionamento de um shortcode, para isso indicaremos o tag que queremos eliminar das disponíveis.
[sourcecode language=”php”]remove_shortcode(“caption”); // Eliminamos [/caption][/sourcecode]
remove_all_shortcodes();
Se desejamos eliminar todos os shortcodes disponíveis em nosso WordPress, simplesmente temos que usar esta função e se encarregará de desativar a todos.
[sourcecode language=”php”]remove_all_shortcodes(); // Todos los shortcodes eliminados[/sourcecode]
shortcode_atts($pairs, $atts);
Função que nos devolve um array de pares com os atributos padrão para nossos shortcodes.
[sourcecode language=”php”]$a = shortcode_atts( array(
‘title’ => ‘My Title’
‘foo’ => 123,
), $atts );
[/sourcecode]
do_shortcode($content);
Função que nos devolve o resultado da execução do texto com o shortcode substituído pela função.
[sourcecode language=”php”]do_shortcode(‘My Caption’); // My Caption[/sourcecode]
Onde pôr este código?
WordPress não indica onde localizar o código correspondente aos shortcodes, mas o arquivo que estão definidas as funções que fazem possível o funcionamento, está localizado em wp-includes/shortcodes.php. Nele não faz referência a nenhum arquivo externo, localizado numa rota algo mais pessoal como wp-content/.
Como quase todo o código de WordPress pode ser inserido em qualquer lugar e de qualquer forma:
- Plugin
- Theme (functions.php)
- my-hacks.php
Mas talves a forma mais fácil seria ter sido adicionar um par de linhas e sacar do core de WordPress uma funcionalidade que permite tal nível de personalização.
[sourcecode language=”php”] if ( file_exists(ABSPATH . ‘wp-content/my-shortcodes.php’) )
require_once (ABSPATH . ‘wp-content/my-shortcodes.php’);[/sourcecode]
Algo assim ao início do arquivo shorcodes.php? Desta forma dispomos de um arquivo externo que nos permite ter definidos nossos shortcodes independente de todas as futuras atualizações…
via anieto2k.com