In una classe di plugin voglio fornire campi semplici per dati pubblici: e-mail, numero di telefono, Twitter ecc. L'elenco può essere esteso.
Vedi il plug-in Dati di contatto pubblico su GitHub per i dettagli.
Per semplificare l'utilizzo, voglio anche offrire codici brevi facili da digitare:
[public_email]
[public_phone]
[public_something]
L'unica differenza è la seconda parte. Non voglio ulteriori argomenti per i codici brevi perché sono soggetti a errori. Quindi registro un gestore di shortcode per tutti i campi nella mia classe di plugin:
foreach ( $this->fields as $key => $value )
{
add_shortcode( 'public_' . $key, array( $this, 'shortcode_handler' ) );
}
Ora shortcode_handler()
deve sapere quale shortcode è stato chiamato. La mia domanda è: come posso farlo?
La mia attuale soluzione alternativa è un'altra funzione:
protected function current_shortcode()
{
$backtrace = debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS );
return $backtrace[3]['args'][0][2];
}
Questo ... funziona per the_content()
. Ma non è né elegante né robusto.
Ho letto wp-includes/shortcodes.php
, ma non riesco a vedere in questo momento come farlo meglio.