2017-07-17 3 views
-2

私はPHPを知っていますが、wordpressにはとても新しいです。そして私はちょうどこのようなものを学ぶにしたくない、だけWordpress:False関数はエラーを再宣言しますか?

、しばらく何かを変更する必要があり、私は関数を宣言していたファイルで

var/www/wp-content/plugins/woocommerce/templates/checkout/thankyou.php

function cr(){ 

} 

しかし、WordPressは私にエラーを与えます

Can't redeclare function cr() (previously declared on line no..xxx) in file ....

今では言及行番号は、この関数が宣言された唯一の場所である、これは私が試したものです。

  1. は、非常に珍しい名前と同じエラーが発生するたびに関数の名前を変更しようとしました。
  2. if(!function_exists('cr')) { function cr() { .. .. } }

に機能を包み、私はエラーを取得する:

Fatal error: Call to undefined function cr() in /var/www/storearn/wp-content/plugins/woocommerce/templates/checkout/thankyou.php on line 74

理由何ができますか?

+0

downvoter?コメントする気に? –

+0

'thankyou.php'ファイルでなぜ関数を宣言したいのですか? –

+0

関数を条件付きで宣言することはできません(ただし、必要に応じて匿名関数を条件付きで宣言できます)。また、 'cr'は関数のひどい名前です。あなたの機能に意味のある名前を付けてください。 – GordonM

答えて

0

あなたは間違ったファイルで関数を宣言しています。

まず、テンプレートファイルは関数を宣言するのに間違った場所です。それは、カスタムプラグインまたはあなたのテーマ(functions.phpまたはそこから含まれるいくつかのファイル)のいずれかに属します。理想的にはカスタムプラグインですが、コンテキストに依存します。プラグインが適切な場所に置かれていると、重複するリスクはないはずです。また、接頭辞を付けることもできます。

私が見る2番目の問題は、あなたがWooCommerceプラグイン自体内のファイルを修正しようとしていることです。 WCを更新するとすぐに、それらの変更が上書きされます。テンプレートはテーマ内で個別にオーバーライドする必要があります。

ドキュメント:https://docs.woocommerce.com/document/template-structure/

+0

ベストプラクティスを共有してくれてありがとうございますが、なぜ機能は既に宣言されていると言えますか? –

+0

上記の手順に従ってください。問題は発生しません。テンプレートが予期しない方法で読み込まれ、同じ名前の他の場所や他の同様の問題を持つ関数があることが考えられます。これらの問題はすべて、正しい方法で解決されます。 –

関連する問題