在php函数中检测wordpress短代码中的参数名称?

时间:2013-08-19 14:05:22

标签: php wordpress shortcode

我正在尝试你理解这个功能,作为分配它为我自己的短代码制作类似功能的序言。我理解如何定义短代码及其功能。我还基本上“得到”原作者在这里做的事情:从短代码中收集参数并将它们组装成HTML标记并返回该标记。似乎params的顺序并不重要,但它们的名字却是。

然而,当我使用这段代码时,似乎并不了解哪个参数是哪个。例如,原始文档说要像这样使用短代码: [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' );

2 个答案:

答案 0 :(得分:0)

短代码明确地在寻找$text

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

根据Shortcode API,使用打开/关闭短代码时设置的变量通常为$content。另一个修复方法是更改​​短代码以查找$content而不是$text

答案 1 :(得分:0)

请参阅Shortcode API的文档,其中明确指出将三个参数传递给短代码回调函数:

  • $ atts - 属性的关联数组,如果不是则为空字符串 给出了属性
  • $ content - 附带的内容(如果短代码以封闭形式使用)
  • $ tag - 短代码标记,对共享回调函数很有用

因此函数定义应如下所示:

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