2012-03-19 38 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