In einer Plugin-Klasse möchte ich einfache Felder für öffentliche Daten bereitstellen: E-Mail, Telefonnummer, Twitter usw. Die Liste kann erweitert werden.
Weitere Informationen finden Sie im Plugin Öffentliche Kontaktdaten auf GitHub.
Um die Verwendung einfach zu halten, möchte ich auch Shortcodes anbieten, die einfach einzugeben sind:
[public_email]
[public_phone]
[public_something]
Der einzige Unterschied ist der zweite Teil. Ich möchte keine weiteren Argumente für die Shortcodes, da diese fehleranfällig sind. Also registriere ich einen Shortcode-Handler für alle Felder in meiner Plugin-Klasse:
foreach ( $this->fields as $key => $value )
{
add_shortcode( 'public_' . $key, array( $this, 'shortcode_handler' ) );
}
Jetzt shortcode_handler()
muss man wissen, welcher Shortcode aufgerufen wurde. Meine Frage ist: Wie mache ich das?
Meine aktuelle Problemumgehung ist eine weitere Funktion:
protected function current_shortcode()
{
$backtrace = debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS );
return $backtrace[3]['args'][0][2];
}
Das… funktioniert für the_content()
. Aber es ist weder elegant noch robust.
Ich habe gelesen wp-includes/shortcodes.php
, kann aber momentan nicht sehen, wie ich es besser machen kann.