В классе плагинов я хочу предоставить простые поля для общедоступных данных: электронная почта, номер телефона, Twitter и т. Д. Список можно расширить.
Смотрите плагин Public Contact Data на GitHub для деталей.
Для простоты использования я также хочу предложить короткие коды, которые легко набирать:
[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
, но я не вижу сейчас, как это сделать лучше.