gpt4 book ai didi

php - Wordpress 在简码函数中使用 echo vs return

转载 作者:可可西里 更新时间:2023-10-31 22:52:50 24 4
gpt4 key购买 nike

我注意到 echoreturn 都可以很好地显示 wordpress 中短代码函数的内容。

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

function foobar_shortcode($atts) {
return "Foo Bar"; //so does this
}

使用这两者之间有什么区别吗?如果是,推荐的 wordpress 方法是什么?我通常在这种情况下使用 echo - 这样可以吗?

最佳答案

Echo 可能适用于您的特定情况,但您绝对不应该使用它。简码并不意味着输出任何东西,它们应该只返回内容。

这是法典中关于短代码的注释:

Note that the function called by the shortcode should never produceoutput of any kind. Shortcode functions should return the text that isto be used to replace the shortcode. Producing the output directlywill lead to unexpected results.

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

输出缓冲

有时您会遇到输出变得难以或难以避免的情况。例如,您可能需要调用一个函数来在您的短代码回调中生成一些标记。如果该函数要直接输出而不是返回值,您可以使用一种称为输出缓冲的技术来处理它。

输出缓冲将允许您捕获代码生成的任何输出并将其复制到字符串。

使用 ob_start() 启动缓冲区,并确保在完成后抓取内容并删除它,ob_get_clean()。两个函数之间出现的任何输出都将写入内部缓冲区。

例子:

function foobar_shortcode( $atts ) {
ob_start();

// any output after ob_start() will be stored in an internal buffer...
example_function_that_generates_output();

// example from original question - use of echo
echo 'Foo Bar';

// we can even close / reopen our PHP tags to directly insert HTML.
?>
<p>Hello World</p>
<?php

// return the buffer contents and delete
return ob_get_clean();
}
add_shortcode( 'foobar', 'foobar_shortcode' );

https://www.php.net/manual/en/function.ob-start.php

关于php - Wordpress 在简码函数中使用 echo vs return,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21538180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com