Обнаружение имен параметров в php-функции для короткого кода WordPress?

Я пытаюсь понять эту функцию, как предисловие к ее разветвлению, чтобы сделать аналогичные функции для моих собственных коротких кодов. Я понимаю, как определить короткие коды и их функции. Я также в основном «получаю» то, что здесь делает оригинальный автор: собирать параметры из короткого кода и собирать их в тег HTML и возвращать этот тег. Кажется, порядок параметров неважен, но их имена.

Однако, когда я работаю с этим кодом, он, похоже, не понимает, какой параметр есть. Например, оригинальные документы говорят использовать короткий код следующим образом: [button link="http://google.com" color="black" size="small"]Button Text[/button]

Но когда я использую этот короткий код, я получаю:

 <a href="Button Text" title="Array" class="button button-small button " target="_self"> <span>Array</span> </a> 

Вот мой PHP:

 if( ! function_exists( 'make_button' ) ) { function make_button( $text, $url, $color = 'default', $target = '_self', $size = 'small', $classes = null, $title = null ) { if( $target == 'lightbox' ) { $lightbox = ' rel="lightbox"'; $target = null; } else { $lightbox = null; $target = ' target="'.$target.'"'; } if( ! $title ) $title = $text; $output = '<a href="'.$url.'" title="'.$title.'" class="button button-'.$size.' '.$color.' '.$classes.'"'.$target.$lightbox.'>'; $output .= '<span>'.$text.'</span>'; $output .= '</a>'; return $output; } } add_shortcode( 'button', 'make_button' ); 

См. Документацию по API Shortcode , там четко указано, что три параметра передаются функции обратного вызова короткого кода :

  • $ atts – ассоциативный массив атрибутов или пустая строка, если атрибуты не указаны
  • $ content – прилагаемый контент (если короткий код используется в его закрывающей форме)
  • $ tag – тег короткого кода, полезный для общих функций обратного вызова

Поэтому определение функции должно выглядеть так:

 function make_button( $atts, $content, $tag ) { // use print_r to examine attributes print_r($atts); } 

Штрих-код явно ищет $text .

 [button url="http://google.com" color="black" size="small" text="Button Text"] 

Обычно переменная, заданная при использовании короткого кода open / close, составляет $content , в соответствии с API Shortcode . Другое исправление заключалось бы в изменении короткого кода для поиска $content вместо $text .