[英]Override a function in WordPress
我有一個插件,因為我需要更改一些文本,但是這個函數沒有鈎子可以使用。
通常使用remove_action()
或remove_filter()
來覆蓋該函數。 對於這兩個函數,我們需要覆蓋過濾器名稱。 但是這個插件功能不會添加任何過濾器。
現在我需要覆蓋這個功能。
例如
插件中的Plugin.php
function plugin(){
echo 'hello';
echo 'welcome you';
}
主題中的Function.php
我想在plugin.php中使用函數plugin()
function theme_plugin(){
echo 'hello';
echo 'You are welcome';
}
plugin()
沒有add_action
。
如何覆蓋plugin()
到theme_plugin()
?
看看這里重新定義PHP函數? ,你不能覆蓋PHP功能或超載它。 你必須找到解決問題的另一種方法。
問候,
如果我是對的,你可以給我們這個鏈接: http : //sltaylor.co.uk/blog/customizing-new-user-email-pluggable-function/
****編輯**
我對wordpress沒有多少經驗。 但是這里有人要求相同: 在WordPress中覆蓋插件中的主題功能
明確的答案是:
除非該函數被覆蓋,否則。 這是基本的PHP。 您無法重新定義函數。 如果你嘗試,你會得到一個致命的錯誤。
編寫WordPress的部分內容將被覆蓋。 看看/wp-includes/pluggable.php。 其中的每個函數都包含在if(!function_exists(...))條件中。 除非你的主題做同樣的事情,有些功能也是如此,否則你無法覆蓋。
四處尋找可能對您有所幫助的過濾器。
看看你的代碼,你應該能夠解開它。 只要確保將鈎子鈎得足夠晚。 這不是一個好的解決方案,但是因為你破壞了主題功能,而且還必須知道主題正在使用的所有鈎子函數的名稱。
是否存在$ fragment中的內容,或$ _POST或$ _GET或其他任何東西,您可以使用它來有條件地運行代碼,剩下的就是其余部分。
無論如何,Wordpress是開源的,所以你可以自己更改代碼嗎? 為什么要改變插件?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.