Dans une classe de plugin, je veux fournir des champs simples pour les données publiques: email, numéro de téléphone, Twitter, etc. La liste peut être étendue.
Voir le plugin Public Contact Data sur GitHub pour plus de détails.
Pour simplifier l'utilisation, je souhaite également proposer des shortcodes faciles à taper:
[public_email]
[public_phone]
[public_something]
La seule différence est la deuxième partie. Je ne veux pas d'autres arguments pour les shortcodes car ils sont sujets aux erreurs. Donc j'enregistrer un gestionnaire de shortcode pour tous les champs dans ma classe de plug - in:
foreach ( $this->fields as $key => $value )
{
add_shortcode( 'public_' . $key, array( $this, 'shortcode_handler' ) );
}
Il shortcode_handler()
faut maintenant savoir quel shortcode a été appelé. Ma question est: comment faire?
Ma solution de contournement actuelle est une autre fonction:
protected function current_shortcode()
{
$backtrace = debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS );
return $backtrace[3]['args'][0][2];
}
Cela… fonctionne pour the_content()
. Mais il n'est ni élégant ni robuste.
J'ai lu wp-includes/shortcodes.php
, mais je ne vois pas pour l'instant comment faire mieux.