2012-10-02 57 views
1

我在我写的插件里面有一个简码。短代码总是打印在顶部,经过一些研究后,我发现我必须'回'而不是'回声',才能将它放在正确的位置。WordPress代码中的短代码总是与内联HTML

我在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; 
    } 

回答

5

你必须返回最终结果,但如果你愿意,你可以缓冲

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; 
} 
+0

你如何处理与内嵌的结果,echo任何缓冲区内则可以retun缓冲的数据,即HTML,CSS,JavaScript。 这不是在php代码中,它是在同一个文件中的php标签之外。 ? 我认为HTML首先得到输出。 – Guru

+0

太棒了,我试了一下。谢谢。我不知道内嵌的HTML不在PHP标签中会被视为PHP字符串。 我认为将它存储在缓冲区中总是用于回显字符串。 – Guru

+0

不客气:-) –