W klasie wtyczek chcę podać proste pola dla danych publicznych: e-mail, numer telefonu, Twitter itp. Listę można rozszerzyć.
Szczegółowe informacje można znaleźć we wtyczce Publiczne dane kontaktowe na GitHub.
Aby uprościć użytkowanie, chcę również oferować łatwe do pisania skróty:
[public_email]
[public_phone]
[public_something]
Jedyną różnicą jest druga część. Nie chcę dalszych argumentów za skrótami, ponieważ są one podatne na błędy. Dlatego rejestruję jedną procedurę obsługi krótkich kodów dla wszystkich pól w mojej klasie wtyczek:
foreach ( $this->fields as $key => $value )
{
add_shortcode( 'public_' . $key, array( $this, 'shortcode_handler' ) );
}
Teraz shortcode_handler()
musi wiedzieć, który skrót został wywołany. Moje pytanie brzmi: jak to zrobić?
Moje obecne obejście to inna funkcja:
protected function current_shortcode()
{
$backtrace = debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS );
return $backtrace[3]['args'][0][2];
}
To… działa dla the_content()
. Ale nie jest ani elegancki, ani solidny.
Przeczytałem wp-includes/shortcodes.php
, ale nie widzę teraz, jak to zrobić lepiej.