Em uma classe de plug-in, desejo fornecer campos simples para dados públicos: email, número de telefone, Twitter etc. A lista pode ser estendida.
Veja o plugin Dados de Contato Público no GitHub para obter detalhes.
Para manter o uso simples, também quero oferecer códigos de acesso fáceis de digitar:
[public_email]
[public_phone]
[public_something]
A única diferença é a segunda parte. Não quero mais argumentos para os códigos de acesso, porque eles são propensos a erros. Então, eu registro um manipulador de shortcode para todos os campos na minha classe de plug-in:
foreach ( $this->fields as $key => $value )
{
add_shortcode( 'public_' . $key, array( $this, 'shortcode_handler' ) );
}
Agora, shortcode_handler()
é necessário saber qual código de acesso foi chamado. Minha pergunta é: como faço isso?
Minha solução atual é outra função:
protected function current_shortcode()
{
$backtrace = debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS );
return $backtrace[3]['args'][0][2];
}
Isso ... funciona para the_content()
. Mas não é elegante nem robusto.
Eu li wp-includes/shortcodes.php
, mas não consigo ver agora como fazê-lo melhor.