好吧,所以我有一个用javascript和php设计的自定义页面模板(让我们调用这个页面1)。 javascript插入第二个自定义页面(page2)模板,该模板在第1页上包含的div中显示内容。
我遇到的问题是
致命错误:无法重新声明contentAd()(之前在/home/content/70/8886870/html/wp-content/themes/myTheme/functions.php中声明: 20)在第23行的/home/content/70/8886870/html/wp-content/themes/myTheme/functions.php中
有问题的函数作为钩子的一部分运行。这不是子主题的functions.php与父主题相同的问题。这要复杂得多......
我确切地知道为什么会发生这种情况:由于page1是page2的容器,所以在加载页面时(应该如此),functions.php中的函数会运行。但是,因为page2包含wp-blog-header.php(自定义wp查询和元数据调用所必需的),当javascript通过page2运行以将其内容插入page1时,同样的functions.php再次运行并导致上述错误。
我正在寻找解决方法。 javascript在页面加载时通过ajax自动运行。 Page2必须存在于page1之外 - 它们不能以任何方式合并。 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.
答案 0 :(得分:1)
你的functions.php文件中的函数包含在if-block中,类似于以下内容,是吗?
if ( ! function_exists( 'contentAd' ) ):
如果不是 - 他们应该是。此检查应防止发生错误并防止不必要的处理。