【问题标题】:Echo versus Return for displaying code用于显示代码的 Echo 与 Return
【发布时间】:2013-11-13 18:35:57
【问题描述】:

我开始着手创建一个 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”(在大多数情况下)。

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

谢谢

【问题讨论】:

  • return之后没有代码行。

标签: php wordpress


【解决方案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');
}

【讨论】:

    【解决方案2】:

    代码中的问题出现在这里:

        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>";
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 我可以坚持对所有三行都使用 echo 吗?
      • 取决于函数的调用方式。返回一个值不会在任何地方输出它。即,如果您的函数返回一个字符串并且您执行echo foo(),那么它将回显 foo() 返回的值。另一方面,如果在函数中使用echo,则调用函数时不需要调用echo,只需通过foo()调用即可。
      • 在短代码回调函数中需要返回输出
      • @diggy 感谢您的澄清,我不太了解 WP。
      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-27
        • 2019-11-20
        • 2012-12-07
        • 2022-11-02
        • 2020-12-10
        相关资源
        最近更新 更多