0

我开始着手创建一个 WordPress 简码,并且很难理解如何使用“返回”专门显示输出,我拥有的代码是

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');
}

?>

当我使用它时,没有任何显示,如果我删除第二个 Return 行并将 .$title 添加到第一行,我会得到容器面板和无样式的标题。如果我用 Echo 替换 Returns 一切正常,但我认为必须有一个原因必须使用“return”(在大多数情况下)。

任何建议或指导将不胜感激。

谢谢

4

4 回答 4

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');
}
于 2013-11-13T18:41:17.490 回答
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>";
于 2013-11-13T18:47:16.630 回答
0

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

function foo() {
    // blah blah blah
    return
        '...' .
        '...' .
        '...';
}
于 2013-11-13T18:39:27.113 回答
0

您可以连接元素.并在最后返回结果:

$html = '';
$html .= '<div class="container panel">';
$html .= '<h3 class="kfl title">' . $title . '</h3>';
$html .= '</div>';
return $html;
于 2013-11-13T18:41:21.993 回答