2017-07-17 60 views
-2

我知道php,但對wordpress很新。我只是不想學這東西,只需要改變某些事情了一小會兒,WordPress的:錯誤的函數重新聲明錯誤?

我在文件

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或從那裏包含的某個文件)。理想情況下是一個自定義插件,但它取決於上下文。將插件放置在正確的位置不應有被複制的風險。您也可以將其作爲前綴。

我看到的第二個問題是你試圖修改WooCommerce插件本身內的文件。一旦更新WC,這些修改將被覆蓋。模板應該在您的主題中單獨覆蓋。

文檔:https://docs.woocommerce.com/document/template-structure/

+0

感謝分享最佳實踐,但爲什麼它說功能已經宣佈! –

+0

按照概述的過程,你不會有這個問題。這可能是因爲模板以意想不到的方式加載,您在其他地方有一個具有相同名稱或少數其他類似問題的功能。所有這些問題都可以通過正確的方式解決 –