在短代码功能中使用echo vs return的Wordpress

kab*_*hya 10 php wordpress shortcode

我刚刚发现两者echoreturn正常工作从一个简码功能显示内容.

function foobar_shortcode($atts) {
    echo "Foo Bar"; //this works fine
}

function foobar_shortcode($atts) {
    return "Foo Bar"; //so does this
}
Run Code Online (Sandbox Code Playgroud)

我只是想知道,使用其中任何一个之间有什么区别吗?如果是这样的推荐是什么?在这种情况下我通常使用echo; 好吗?

Nat*_*son 21

Echo可能适用于您的具体情况,但您绝对不应该使用它.短代码并不意味着输出任何内容,它们只应返回内容.

以下是关于短代码的代码注释:

请注意,短代码调用的函数永远不会产生任何类型的输出.短代码函数应返回用于替换短代码的文本.直接生成输出将导致意外结果.

http://codex.wordpress.org/Function_Reference/add_shortcode#Notes


小智 17

如果要输出大量内容,则应使用:

add_shortcode('test', 'test_func');
function test_func( $args ) {
  ob_start();
  ?> <your contents/html/(maybe in separate file to include) code etc> <?php

  return ob_get_clean();
}
Run Code Online (Sandbox Code Playgroud)

  • 优秀!这正是我所需要的。我不知道PHP中的输出缓冲(ob_start)。可在此处找到一些有用的信息来帮助解释此答案:http://stackoverflow.com/questions/2832010/what-is-output-buffering (2认同)
  • 好吧,它有效!现在,我可以将我的简码的内容准确输出到期望的位置。 (2认同)

Kim*_*Fox 6

如果在短代码中使用"echo",则信息将显示在处理短代码的任何位置,这不一定是您实际添加短代码的位置.如果您使用"return",则信息将准确返回您在页面中添加短代码的位置.

例如,如果你有一个图像,然后是短代码,那么文本:
Echo:将在图像上方输出
返回:将在图像之后和文本之前输出(实际添加短代码的地方)