2012-03-19 52 views
0

好了,所以我設計了JavaScript和PHP的自定義頁面模板(讓我們稱之爲這個第1頁)第二個自定義頁面。 JavaScript插入第二個自定義頁面(page2)模板,該模板顯示頁面1中包含的div內部的內容。WordPress的 - 自定義頁面包括造成問題的功能文件

我的問題是

Fatal error: Cannot redeclare contentAd() (previously declared in /home/content/70/8886870/html/wp-content/themes/myTheme/functions.php:20) in /home/content/70/8886870/html/wp-content/themes/myTheme/functions.php on line 23

有問題的函數運行的鉤的一部分。這不是兒童主題的functions.php與父母相同的問題。這是更爲複雜..

我知道正是爲什麼這是發生:由於第1頁是第2頁的容器,在functions.php中運行的功能時,頁面加載(如它應該)。但是,由於第2頁包括可溼性粉劑博客 - header.php文件(需要自定義WP查詢和調用的元數據),當通過JavaScript的運行第2頁插入其內的第1頁的內容,非常相同的functions.php再次運行,並導致上述錯誤。

我在尋找解決的辦法。 javascript通過ajax在頁面加載時自動運行。第2頁必須存在於第1頁之外 - 它們不能以任何方式合併。 Page1和Page2不使用相同的鉤子。實際上,page2甚至不會調用contentAd()函數。由於ajax調用,這完全是functions.php執行多次的問題。

有沒有辦法阻止的functions.php從給定的網頁上執行?否則,我接受你的建議!

第1頁:

<?php 
/* 
Template Name: Page1 
*/ 
?> 

<?php get_header(); ?> 

<script type="text/javascript" src="../wp-content/themes/myTheme/insert.js"></script> 
<div id="content"> 
    <div class="padder"> 
     <?php do_action('bp_before_blog_home') ?> 
     <?php do_action('template_notices') ?> 
     <div class="page" id="blog-latest" role="main"> 
     <div class="spacer" style="float:left;">&nbsp</div> 

     <div class="spacer" style="float:right;">&nbsp</div> 
      <ol class="row" id="updates"> 
       <div id="contained"></div> 
      </ol> 
     </div> 
    </div> 
</div> 
<?php get_sidebar() ?> 
<?php get_footer() ?> 

insert.js:

$(document).ready(function() { 
    $('#contained').load('../wp-content/themes/myThemes/page2.php'); 
}); 

第2頁:

<?php include("../../../wp-blog-header.php"); ?> 
A whole bunch of code sits in here but keeping the above line all by itself still produces the error hence my theory. 
+0

的錯誤是沒有的JavaScript的感覺。 JavaScript不在服務器端運行,它在瀏覽器中運行。 jquery load()方法正在向該腳本發出ajax請求,並且當您包含wp-blog-header.php時,wordpress將執行一次全新的引導。你的問題在別處。當你直接在瀏覽器中訪問wp-content/themes/myThemes/page2.php時會發生什麼? – Rob 2012-03-19 02:20:46

+0

它加載正常。我知道錯誤不是JavaScript。錯誤在於wordpress在獲取page2時第二次調用functions.php。因爲functions.php只能初始化一次,所以會產生錯誤。 – Sweepster 2012-03-19 05:14:56

回答

1

您的functions.php文件內的功能被包裹在一個如果塊,類似以下是,是嗎?

if (! function_exists('contentAd')):

如果沒有 - 他們應該是。該檢查應能防止發生錯誤並防止不必要的處理。

+0

成功!當代碼越來越複雜時,很容易錯過這樣一個簡單的解決方案。謝謝。 – Sweepster 2012-03-19 05:19:39