我在我写的插件中有一个短代码。短代码总是打印在顶部,经过一些研究后我发现我必须'返回'而不是'回声'让我把它放到正确的位置。
我在PHP文件中的各种脚本标签中都有内联HTML,css,javascript。有没有办法我可以让它工作而不试图返回所有内联HTML。 (在所有html标签中添加'return'是一项巨大的努力)?
我知道有一个关于短代码打印的问题已被问到,但这与我遇到的问题并不完全相同。
感谢您的回答。
只是让人们了解我正在处理的代码:这只是代码的一小部分,但是html,css遍布整个地方。
extract(shortcode_atts(array(
'id'=>'0', 'key'=>'0'), $atts));
if(substr($id, -3) == "***") $id = substr($id, 0, 8);
$id_licenses = getDbInfo($id);
$id_desc = array();
if(is_array($id_licenses)) $id_desc = $id_licenses;
else $id_desc[0] = $id_licenses;
if(isset($_POST['desc'])) {
$info = $_POST['desc'];
$ids = getDbInfoByDesc($info);
}
?>
<style type="text/css">
label.inputlabel
{
width: 8em;
float: left;
text-align: left;
margin-right: 0.5em;
display: block;
padding-left: 0.5em;
font-family: Tahoma;
}
答案 0 :(得分:5)
你必须返回最终结果,但如果你想要,你可以缓冲结果和缓冲区内的echo
任何内容,然后可以重新调整缓冲数据,即
function yourShortCodeFunction(){
ob_start();
echo "Hello"; // this will not print out
// more code
$result = ob_get_contents(); // get everything in to $result variable
ob_end_clean();
return $result;
}