2016-11-14 85 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

正确,但如果它是主题框架或另一个插件中的库,则预计它将由主题或其他插件激活。 –