En una clase de complemento, quiero proporcionar campos simples para datos públicos: correo electrónico, número de teléfono, Twitter, etc. La lista se puede ampliar.
Consulte el complemento Datos de contacto público en GitHub para obtener más detalles.
Para mantener el uso simple, también quiero ofrecer códigos cortos que sean fáciles de escribir:
[public_email]
[public_phone]
[public_something]
La única diferencia es la segunda parte. No quiero más argumentos para los códigos cortos porque son propensos a errores. Así que registro un controlador shortcode para todos los campos en mi clase de complemento:
foreach ( $this->fields as $key => $value )
{
add_shortcode( 'public_' . $key, array( $this, 'shortcode_handler' ) );
}
Ahora shortcode_handler()
tiene que saber qué shortcode se ha llamado. Mi pregunta es: ¿Cómo hago esto?
Mi solución actual es otra función:
protected function current_shortcode()
{
$backtrace = debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS );
return $backtrace[3]['args'][0][2];
}
Esto ... funciona para the_content()
. Pero no es elegante ni robusto.
He leído wp-includes/shortcodes.php
, pero no puedo ver ahora cómo hacerlo mejor.