我正在尝试将一些自定义PHP代码添加到Wordpress自定义帖子类型中。
在一个单独的 php 文件中,我有这个:
<?php
$BuildForm = '<script src="//app.marketo.com/js/forms2/js/forms2.min.js"></script>
<form id="mktoForm_1111"></form>
<script>MktoForms2.loadForm("//app.marketo.com", "345-XCL-354", 1111,
function(form) {
for ( var ss = document.styleSheets, i = 0, imax = ss.length; i < imax; i++ ) {
if ( ( ss[i].href && ss[i].href.indexOf("marketo.com") !== -1 )
|| ( (ss[i].ownerNode || ss[i].owningElement).parentNode == form.getFormElem()[0] ) ) {
}
}
form.onSuccess(function(values, followUpUrl){
location.href = "#";
return false;
});
form.vals({ "comments":"test"});
});
</script>';
?>
然后在 Wordpress 中的自定义帖子类型中,我有这个:
<div id="TheForm" style="max-width:40%; margin: 0 auto;"></div>
<script type="text/javascript">
document.getElementById("TheForm").innerHTML = '<?php echo $BuildForm; ?>' ;
</script>
我遇到的问题是 #TheForm 的内容显示为';
我不太确定问题是什么。我需要以不同的方式格式化 PHP 变量中的 JavaScript 吗?
例如,我尝试逃离"
和/
,但这也没有帮助。
(在你问之前,是的,我在我的 Wordpress 自定义帖子类型中包含外部 php 文件)。
当然不行!PHP 在服务器上执行(不输出任何内容),然后由客户端渲染,然后你的 javascript 运行。你的客户端JavaScript不知道如何处理PHP。
你的PHP应该返回完全格式的HTML,如下所示:
<?
$BuildForm = '....';
?>
<div id="TheForm" style="max-width:40%; margin: 0 auto;">
<?= $BuildForm ?>
</div>
或者,更改客户端 javascript 以通过 ajax 获取$BuildForm
HTML。但是让你的PHP生成你想要的HTML可能更容易。
由于您的$BuildForm
变量包含 </script>
,因此会有一个SyntaxError: Unexpected EOF
。下面分配的代码示例:
<script type="text/javascript">
<script src="//app.marketo.com/js/forms2/js/forms2.min.js"></script> <!-- </script> tag will be closed here -->
</script>
<script type="text/javascript">
将在... forms2.min.js"></script>
关闭,关闭时间太早。
因此,最好的替代方法是将表单直接echo
到div
中。
<div id="TheForm" style="max-width:40%; margin: 0 auto;"><?php echo $BuildForm; ?></div>