2016-02-28 84 views
3

我正在嘗試將一些自定義PHP代碼添加到Wordpress自定義帖子類型中。PHP變量包含HTML和JavaScript。通過JavaScript無法將其注入到HTML中

在一個單獨的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?

例如,我嘗試轉義"/,但這也沒有幫助。

(之前你問,是的,我包括外部的PHP文件在我的Wordpress自定義帖子類型)。

+0

Aye carumba。不要以這種方式注入JavaScript。糟糕,糟糕的主意。 –

回答

0

當然,它不工作! 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可能更容易。

0

由於您的$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> 
+0

我的問題是,我需要能夠讓Wordpress編輯器能夠移動這個div。這個想法是,他們將div容器添加到他們想要的位置,並將javascript注入到它。 如果我將div添加到php變量中,那麼我的編輯器無法在Wordpress中使用視覺作曲程序移動它。 – PartisanEntity

+0

通過admin_enqueue_scripts添加JavaScript,而不是通過html注入 –