2013-08-19 5 views
1

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

Однако, когда я работаю с этим кодом, он, похоже, не понимает, какой параметр есть. Например, оригинальные документы говорят, чтобы использовать шорткод так: [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'); 

ответ

0

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

  • $ АТЦ - ассоциативный массив атрибутов, или пустая строка, если не атрибуты не указаны
  • $ контент - вложенный контент (если шорткод используется в его вмещающей форме)
  • $ тег - шорткод тега, полезно для общих функций обратного вызова

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

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

шорткод явно ищет $text.

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

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

+0

Я попробовал, что перед публикацией здесь, я все еще получаю как кнопка размещена выше. – Steve

+0

Все аргументы хранятся в переменной '$ atts', вы можете var_dump эту переменную и посмотреть, как атрибуты хранятся в коротком кодексе? –

+0

Да, я не понимаю, как этот автор вообще работал. Я разорвал его и использовал этот метод для создания тега, как в '$ atts ['link']' – Steve