Echo与Return用于显示代码

时间:2013-11-13 18:35:58

标签: php wordpress

我正在开始创建一个WordPress短代码,我很难理解如何使用'Return'专门显示输出,我的代码是

if (!function_exists('kfl')) {
    function kfl( $atts, $content = null ) {
        extract(shortcode_atts(array(
            'title'      => 'Title goes here',
        ), $atts));

        return "<div class=\"container panel\">";
        return "<h3 class=\"kfl title\">".$title."</h3>";
        return "</div>";
    }
    add_shortcode('kfl', 'kfl');
}

?>

当我使用它时,没有显示任何内容,如果我删除第二个返回行并将。$标题添加到第一行,我将获得容器面板和无样式标题。如果我用Echo替换返回它一切正常,但我认为必须有一个原因,必须使用'return'(在大多数tuts中)。

非常感谢任何建议或指导。

由于

4 个答案:

答案 0 :(得分:1)

通常,注册为短代码的函数有一个变量,在该变量中逐步插入代码然后返回它。在你的情况下:

if (!function_exists('kfl')) {
    function kfl( $atts, $content = null ) {
        extract(shortcode_atts(array(
            'title'      => 'Title goes here',
        ), $atts));

        $output = "<div class=\"container panel\">";

        $output .= "<h3 class=\"kfl title\">".$title."</h3>";

        $output .= "</div>";

        return $output;
    }
    add_shortcode('kfl', 'kfl');
}

答案 1 :(得分:1)

代码中的问题来自:

    return "<div class=\"container panel\">";
    return "<h3 class=\"kfl title\">".$title."</h3>";
    return "</div>";

当处理第一个return时,控件将离开该函数,因此第二个和第三个returns将不会被执行

如果你需要返回所有这些,然后将它们连接在一个变量中并最终返回它:

$return = "<div class=\"container panel\"><h3 class=\"kfl title\">".$title."</h3></div>";
return $return ;

否则,如果你只想显示所有这些,请使用:

    echo "<div class=\"container panel\">";
    echo "<h3 class=\"kfl title\">".$title."</h3>";
    echo "</div>";

答案 2 :(得分:0)

一旦执行命中一个返回,它就会离开该函数。因此,连续三次返回意味着第二次和第三次永远不会被执行。你可以这样做,使用字符串连接运算符将这三个部分连接成一个字符串:

function foo() {
    // blah blah blah
    return
        '...' .
        '...' .
        '...';
}

答案 3 :(得分:0)

您可以使用.连接元素并在结尾返回结果:

$html = '';
$html .= '<div class="container panel">';
$html .= '<h3 class="kfl title">' . $title . '</h3>';
$html .= '</div>';
return $html;