У класі плагінів я хочу надати прості поля для публічних даних: електронна пошта, номер телефону, Twitter тощо. Список можна розширити.
Докладні відомості див. У плагінах .
Щоб зробити використання простим, я також хочу запропонувати короткі шрифти, які легко набрати:
[public_email]
[public_phone]
[public_something]
Єдина відмінність - друга частина. Я не хочу більше аргументів для шорткодів, оскільки вони схильні до помилок. Тому я реєструю один обробник коротких кодів для всіх полів мого класу плагінів:
foreach ( $this->fields as $key => $value )
{
add_shortcode( 'public_' . $key, array( $this, 'shortcode_handler' ) );
}
Тепер shortcode_handler()
має знати, який короткий код був викликаний. Моє запитання: як це зробити?
Моє поточне вирішення - ще одна функція:
protected function current_shortcode()
{
$backtrace = debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS );
return $backtrace[3]['args'][0][2];
}
Це… працює для the_content()
. Але це ні елегантно, ні надійно.
Я читав wp-includes/shortcodes.php
, але зараз не бачу, як зробити це краще.