2016-11-14 78 views
2

如果ACF插件已停用或未安裝,我想在我的主題中阻止fatal errorWordPress:檢查插件是否已安裝(ACF)

該插件的主要功能是get_field()。 我在functions.php寫了這個代碼來檢查:

if (!function_exists('get_field')) { 
    function get_field() { 
    echo '<span>plugin ACF is not installed</span>'; 
    } 
} 

請告訴我這是可以接受的做法?

回答

2

首先,這不是主要的插件功能,只是其中之一。可能是最常用於主題中的插件用戶。另一個是the_field(),其實際打印值(get_field()返回它)。

關於定義自定義函數的做法 - 沒關係。然而,我不會在每個ACF字段所在的地方打印這條長信息 - 其中一些信息可能很短(數字),這個信息會破壞佈局。印刷更短的東西比較好,imo。

此外,function_exists是正確的檢查,而不是is_plugin_active,因爲ACF也可以作爲庫與主題框架或其他插件。

另一種選擇是完全去除前端對ACF的依賴。您可以使用get_post_meta()輸出字段的內容,並防止ACF插件完全加載到前端。看到這兩個職位的詳細信息:

http://www.billerickson.net/code/disable-acf-frontend/

http://www.billerickson.net/advanced-custom-fields-frontend-dependency/

+0

這真的很酷!我永遠不會想到這一點。現在我將編寫更好的質量代碼。感謝您的經驗! – Joe

1

是的,這是檢查插件功能是否存在的好方法。

您也可以嘗試is_plugin_active函數來檢查插件是否被激活,因爲函數可以在某處重新聲明。

我認爲你這樣做的主要原因是爲了防止致命錯誤,所以你可以使用哪種方式並不重要。

+0

ACF可以運爲主題的框架或其他插件中的庫。 'function_exists()'是一個更安全的方法來檢查。 –

+0

正確,但如果它是主題框架或另一個插件中的庫,則預計它將由主題或其他插件激活。 –