好了,所以我設計了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;"> </div>
<div class="spacer" style="float:right;"> </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.
的錯誤是沒有的JavaScript的感覺。 JavaScript不在服務器端運行,它在瀏覽器中運行。 jquery load()方法正在向該腳本發出ajax請求,並且當您包含wp-blog-header.php時,wordpress將執行一次全新的引導。你的問題在別處。當你直接在瀏覽器中訪問wp-content/themes/myThemes/page2.php時會發生什麼? – Rob 2012-03-19 02:20:46
它加載正常。我知道錯誤不是JavaScript。錯誤在於wordpress在獲取page2時第二次調用functions.php。因爲functions.php只能初始化一次,所以會產生錯誤。 – Sweepster 2012-03-19 05:14:56