Wordpress-自定义页面包括第二个导致函数文件问题的自定义页面

Wordpress - Custom page includes second custom page causing problems with functions file

本文关键字:自定义 文件 问题 函数 面包 第二个 Wordpress-      更新时间:2023-09-26

好吧,我有一个用javascript和php设计的自定义页面模板(让我们称之为page1)。javascript插入第二个自定义页面(page2)模板,该模板显示名为contained on page1的div中的内容。

我遇到的问题是

致命错误:无法在/home/content/70/8886870/html/wp-content/themes/myTheme/functions.php的第23行重新声明contentAd()

有问题的函数作为钩子的一部分运行。这不是子主题的函数.php与父主题相同的问题。这要复杂得多。。

我很清楚为什么会发生这种情况:由于page1是page2的容器,functions.php中的函数在加载页面时运行(应该如此)。然而,由于page2包含wp-blog-header.php(自定义wp查询和元数据调用所必需),当javascript在page2中运行以将其内容插入page1时,同样的functions.php再次运行并导致上述错误。

我正在想办法解决这个问题。javascript通过ajax在页面加载时自动运行。Page2必须存在于page1之外-它们不能以任何方式合并。Page1和Page2不使用相同的挂钩。事实上,Page2甚至没有调用函数contentAd()。这完全是functions.php由于ajax调用而多次执行的问题。

有没有办法阻止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.

functions.php文件中的函数被包装在if块中,类似于下面的内容,是吗?

if ( ! function_exists( 'contentAd' ) ):

如果没有,它们应该是。这个检查应该防止错误发生,并防止不必要的处理。