Wordpress - 自定义页面包含导致功能文件出现问题的第二个自定义页面

时间:2012-03-19 01:05:44

标签: javascript ajax wordpress function include

好吧,所以我有一个用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;">&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.

1 个答案:

答案 0 :(得分:1)

你的functions.php文件中的函数包含在if-block中,类似于以下内容,是吗?

if ( ! function_exists( 'contentAd' ) ):

如果不是 - 他们应该是。此检查应防止发生错误并防止不必要的处理。