En una clase de complemento, deseo 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 información.
Para simplificar el uso, 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 de 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()
debe saber a 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 ni elegante ni robusto.
He leído wp-includes/shortcodes.php
, pero no puedo ver ahora cómo hacerlo mejor.