申し訳ありませんので、javascriptとphpで設計されたカスタムページテンプレートがあります。 javascriptは、page1に含まれるdiv内のコンテンツを表示する2番目のカスタムページ(page2)テンプレートを挿入します。Wordpress - カスタムページには機能ファイルの問題を引き起こす2番目のカスタムページが含まれています
私が持っている問題は、問題の関数は、フックの一部として実行
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が親と同じであるという問題ではありません。これははるかに複雑です。
これはなぜ起こっているのか正確に知っています:page1はpage2のコンテナなので、function.phpの関数はページが読み込まれたときに実行されます。しかし、page2にはwp-blog-header.php(カスタムwpクエリとメタデータ呼び出しに必要)が含まれているため、javascriptがpage2を通ってその内容をpage1に挿入すると、非常に同じfunctions.phpが再度実行され、上記のエラーが発生します。
私はこれを回避する方法を模索しています。 JavaScriptは自動的にページロード時にajaxによって実行されます。ページ2はページ1の外側に存在しなければなりません - どのような方法でもマージすることはできません。 Page1とPage2は同じフックを使用しません。実際にPage2は、contentAd()関数を呼び出すことさえしません。これは、ajax呼び出しのためにfunctions.phpが複数回実行されるという問題です。
functions.phpが特定のページで実行されないようにする方法はありますか?それ以外の場合は、私はあなたの提案に開放されています!
のPage1:
<?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.
エラーはjavascriptのためではありません。 javascriptはサーバー側では実行されず、ブラウザーで実行されます。 jquery load()メソッドはそのスクリプトへのajaxリクエストを作成しています.wp-blog-header.phpをインクルードすると、wordpressは新しいブートストラップを実行しています。あなたの問題は他のところにあります。 wp-content/themes/myThemes/page2.phpにブラウザで直接アクセスするとどうなりますか? – Rob
正常に読み込まれます。私はエラーがjavascriptではないことを知っている。このエラーは、page2がフェッチされたときにwordpressがfunctions.phpを2回呼び出すことにあります。 functions.phpは一度だけ初期化できるので、エラーが生成されます。 – Sweepster