2015-05-18 41 views
0

我正在構建一個簡單的wordpress插件,並試圖將主題函數用於插件文件,但它說「調用未定義的函數」,而該函數存在於themes.php中當前活動的主題。該功能在主題文件中使用,但無法在插件文件中訪問,任何人都可以指導要做什麼? ,而我必須將插件與主題作爲強制插件。如何在Wordpress中使用主題函數插入插件文件

謝謝

回答

1

插件是如此的功能尚未在你調用它的時候定義的主題之前加載。改爲在諸如init的鉤子上執行您的代碼。

E.g.

function wpse_my_plugin_init() { 
    myPreviouslyUndefinedThemeFunction(); 
} 
add_action('init', 'wpse_my_plugin_init'); 

在這裏看到的勾選項列表:https://codex.wordpress.org/Plugin_API/Action_Reference

儘早你必須把這個代碼將是after_setup_theme

另一方面,我建議重新考慮這種方法。一個插件應該是一個獨立的模塊;它不應該與你的主題相關聯。

0

你的方法/設計是嚴重的缺陷。插件功能不應該依賴主題功能。正如已經指出的@NathanDawson,插件會首先加載,然後子主題功能,然後父主題功能,讓你的辦法行不通的縮進或不很多不必要的臃腫代碼

插件是爲了延長網站功能,而不是主題功能。我認爲這是你的想法嚴重缺陷的地方,最有可能是由於缺乏誰應該做什麼以及何時應該做什麼的知識。當我說過,插件應該爲網站提供功能。像favicons,自定義帖子類型,自定義分類法,簡碼,小部件,相關帖子和重寫規則功能應該在插件。這爲您的網站提供了功能,這就意味着,當您更改主題時,這些功能不會改變,或者不會受到影響。另外,如果插件被刪除,它不會改變主題的外觀和操作方式。

主題特定功能是爲主題本身提供功能的功能。沒有這些功能,主題就會失去功能或外觀。它只是意味着主題的變化。這些功能包括排入您的樣式表和腳本,主題支持功能,側邊欄,自定義標題和背景以及註冊圖像大小的功能。

如果您打算讓插件依賴主題代碼,則應該創建一個子主題,因爲子主題旨在擴展主題。子主題繼承父主題的所有功能,並可以擴展,修改或向父主題添加新功能。

總之,通過使插件依賴主題代碼,您的網站非常容易破損。如果你改變你的主題,你會打破你的網站,因爲你會打破你的插件。這不是插件和主題如何互動。通過創建一個兒童主題來代替,您將無視此風險,因爲子主題不能在被激活,而父主題不在主題的文件夾中,也不能同時激活任何兩個主題。

相關問題