如何直接调用短码函数并传递$ATTS

时间:2011-02-23 作者:Evan Yeung

我正在使用Media Library Categories 插件。它没有太多的文档,所以我总结出实现它的方法是使用短代码[mediacategories categories="6"].

我想将其直接实现到主题模板中。所以我尝试过:

<?php if(function_exists(do_shortcode(\'[mediacategories categories="6"]\'))) { ?>
  <h1>Inspiration</h1>
<?php
  do_shortcode(\'[mediacategories categories="6"]\');
}
我还试图直接实现该函数,但无法正确传递$atts以供函数使用。

2 个回复
最合适的回答,由SO网友:fuxia 整理而成

do_shortcode() 只是解析字符串。你必须使用echoprint 打印出来。

function_exists() 需要与函数名匹配的字符串。查看插件后,我会尝试以下代码:

<?php
if ( function_exists( \'mediacategories_func\' ) )
{
?>
<h1>Inspiration</h1>
<?php
    print mediacategories_func( array( \'categories\' => 6 ) );
}

SO网友:wyrfel

我通常会在我的短代码回调中添加这样的部分:

if (is_array($atts)) {
    extract(shortcode_atts(array(
            \'primary_att\' => \'primary_default\',
            ...
        ), $atts));
} else {
    $primary_att = $atts;
}
这使您能够传递“primary”属性(替换primary_att 使用您调用的主属性)直接插入函数中,而无需将其包装到数组中。。。在你的情况下,它可以是“类别”,你可以这样称呼它mediacategories_func(6); 然后

结束

相关推荐

How do you debug plugins?

我对插件创作还很陌生,调试也很困难。我用了很多echo,它又脏又丑。我确信有更好的方法可以做到这一点,也许是一个带有调试器的IDE,我可以在其中运行整个站点,包括插件?