我以前遇到过这个问题:短代码不应该display 任何内容(使用print
或echo
), 相反return
要输出的内容。
如果转换所有输出语句太麻烦,或者需要使用始终显示输出的函数,可以使用output buffering. 缓冲区将“捕获”任何echo
\'d或print
\'并允许您将其写入变量。
function my_awesome_shortcode( $atts, $content = null ) {
// begin output buffering
ob_start();
// output some text
echo \'foo\' . "bar\\n";
$greeting = \'Hello\';
printf( \'%s, %s!\', $greeting, \'World\' );
// end output buffering, grab the buffer contents, and empty the buffer
return ob_get_clean();
}
add_shortcode( \'awesome\', \'my_awesome_shortcode\' );
了解更多有关
Output Buffering Control 还有不同的
Output Control Functions 您可以使用的。