【问题标题】:WordPress plugin tag not parsing in <script> blockWordPress 插件标签未在 <script> 块中解析
【发布时间】:2009-12-19 17:45:39
【问题描述】:

我在我的一个 WordPress 插件文件中使用了以下代码:

else if($filetype == 'swf'){
print
<<<EOT
<script type="text/javascript" language="javascript">
jQuery(document).ready(function(){
var embed = '<div>[kml_flashembed movie="$img" /]</div>';
jQuery("#header").prepend(jQuery(embed));
});
</script>
<style type="text/css">
#$headerID {
background: none;   
}
.flashmovie {
position: absolute;
}
</style>
EOT;}

但不是解析 [kml_flashembed] 块,而是按原样吐出。我手动把它放在我的header.php 文件中,它在那里渲染得很好,所以问题在于 JavaScript 将它注入 HTML 的方式。

有人能解释一下我应该改变什么来解析标签而不是按字面呈现吗?

(该标签用于 WordPress Kimili Flashembed 插件。)

【问题讨论】:

    标签: javascript jquery wordpress parsing tags


    【解决方案1】:

    如果您将 [kml_flashembed movie="$img" /] 放在 heredoc 块中,您不能指望 PHP 替换它

    else if($filetype == 'swf'){
    print <<<EOT
    <script type="text/javascript" language="javascript">
    jQuery(document).ready(function(){
    var embed = '<div>
    EOT;
    [kml_flashembed movie="$img" /]
    print <<<EOT2
    </div>';
    jQuery("#header").prepend(jQuery(embed));
    });
    </script>
    <style type="text/css">
    #$headerID {
    background: none;   
    }
    .flashmovie {
    position: absolute;
    }
    </style>
    EOT2;}
    

    【讨论】:

    • 这完全有道理,但它不适合我。我在 Firebug 中没有看到任何错误,页面只是吐出空白。当我注释掉这段代码时,页面加载正常,所以问题出在某个地方。我确保EOT;EOT2; 标签之前或之后没有任何空格。还能是什么?感谢您的帮助。
    • 请稍微更改代码重试。也许还可以在 [kml....] 块中添加打印
    • 不幸的是没有运气。如果块前面没有print,它会打印一个空白页。使用print,它会像以前一样吐出[kml...] 块。
    【解决方案2】:

    尝试使用do_shortcode 函数来扩展短代码。

    【讨论】:

    • 我把它改成了下面这样: else if($filetype == 'swf'){ $content = do_shortcode("[kml_flashembed movie=\"$img\" /]"); print jQuery(document).ready(function(){ alert($content); jQuery("#$headerID").prepend(jQuery( $内容)); }); Firebug 告诉我:missing ] after element list 有什么想法或建议吗?
    猜你喜欢
    • 2012-02-18
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-29
    • 2011-08-02
    相关资源
    最近更新 更多