Wordpress - Пользовательская страница включает в себя вторую пользовательскую страницу, вызывающую проблемы с файлом функций - PullRequest
0 голосов
/ 19 марта 2012

Хорошо, поэтому у меня есть пользовательский шаблон страницы, разработанный с использованием javascript и php (давайте назовем эту страницу1).Javascript вставляет второй шаблон пользовательской страницы (page2), который отображает содержимое внутри div, называемого содержащимся на page1.

У меня проблема:

Неустранимая ошибка: Невозможно повторно объявить contentAd () (ранее объявленный в / home/content/70/8886870/html/wp-content/themes/myTheme/functions.php:20) в /home/content/70/8886870/html/wp-content/themes/myTheme/functions.php в строке 23

Рассматриваемая функция выполняется как часть ловушки.Это не вопрос того, что functions.php дочерней темы совпадает с родительским.Это гораздо сложнее ..

Я точно знаю, почему это происходит: поскольку page1 является контейнером для page2, функции в functions.php запускаются при загрузке страницы (как и должно быть).Однако, поскольку page2 включает в себя wp-blog-header.php (необходимый для пользовательских запросов wp и вызовов метаданных), когда javascript проходит через page2 для вставки своего содержимого в page1, тот же файл functions.php запускается снова и вызывает вышеуказанную ошибку.

Я ищу способ обойти это.JavaScript запускается автоматически при загрузке страницы через AJAX.Страница2 должна существовать за пределами страницы1 - их нельзя объединить.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.

1 Ответ

1 голос
/ 19 марта 2012

Функции в вашем файле functions.php обернуты в блок if, как показано ниже, да?

if ( ! function_exists( 'contentAd' ) ):

Если нет - они должны быть.Эта проверка должна предотвратить возникновение этой ошибки и предотвратить ненужную обработку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...