这个短码有什么问题?我把它放在了内容里面的错误位置

时间:2010-12-31 作者:Philip

大家好,
我尝试创建一个快捷码,打印知识共享徽标和一些文本,一切正常,只是我把快捷码放在了帖子的末尾,但快捷码放在了帖子内容的顶部,

我使用下面的代码:

<?php // Creative Commons License Shortcode

function creativecommons( $atts, $content = null )
{
    extract( shortcode_atts( array(
      \'type\' => \'\',
      \'code\' => \'\',
      ), $atts ) );

{ ?>
<div class="license">
    <div class="cc-img">
        <img src="<?php bloginfo(\'template_directory\'); ?>/images/cc.png" width="32" height="32" alt="Creative Commons License" />
    </div>
    <div class="cc-content">
        <h4><?php echo $type ?></h4>
        <small><?php echo $code ?></small>
    </div>
</div><!-- end of license -->
<div class="clear"></div><!-- clear div -->
<?php }
    return;
}
add_shortcode(\'cc1\', \'creativecommons\');
?>
我在这里遗漏了一些东西,或者其他一些与我的问题有关的东西<非常感谢,菲利普

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

两件事:我认为您的shortcode函数应该返回值,而不是打印它,并且您不应该让输出像这样用大括号括起来(第一个div之前的一个,以及返回之前的一个)。除非这是我从未见过的晦涩难懂的php语法(完全有可能)?

据我所知,无论何时关闭php标记(甚至在函数内部),解析器都会立即输出结果,而不会返回结果。

SO网友:bbeeman

函数定义中大括号的唯一错误是,右大括号与左大括号相同。return语句不正确。它应该在函数定义括号内,并且应该看起来像这样(来自W3学校):

function add($x,$y)
{
    $total=$x+$y;
    return $total;
}

echo "1 + 16 = " . add(1,16);
我不确定您想要返回什么值。

另外,前面的评论是正确的。您不能在函数外部回显函数中定义的变量值。我相信函数中定义的变量是该函数的局部变量。这就是return语句发挥作用的地方。

显然,您希望从函数返回多个值。由于函数不能返回多个值,因此可以使用数组执行此操作。然后可以在函数外部检索值。

请参阅我在web上学习的以下示例。

function small_numbers()
{
    return array (0, 1, 2);
}

list ($zero, $one, $two) = small_numbers();

结束

相关推荐

Nested Shortcode Detection

如果您熟悉此代码<?php $pattern = get_shortcode_regex(); preg_match(\'/\'.$pattern.\'/s\', $posts[0]->post_content, $matches); if (is_array($matches) && $matches[2] == \'YOURSHORTCODE\') { //shortcode is being used }&#