WordPress:检查是否安装了插件 (ACF)
WordPress: Check if plugin is installed (ACF)
如果 ACF 插件被停用或未安装,我想阻止 fatal error
在我的主题中。
插件的主要功能是get_field()
。
我在 functions.php
中写了这段代码来检查:
if ( !function_exists('get_field') ) {
function get_field() {
echo '<span>plugin ACF is not installed</span>';
}
}
请告诉我这是可以接受的做法吗?
是的,这是检查插件功能是否存在的好方法。
您也可以尝试is_plugin_active函数来检查插件是否激活,因为该函数可以在某处重新声明。
我认为你这样做的主要原因是为了防止致命错误,所以你可以使用哪种方式并不重要。
首先,这不是主要的插件功能,只是其中的一个。可能是主题中插件用户最常使用的。另一个是 the_field()
,它实际上打印值(get_field()
returns)。
关于定义自定义函数的做法 - 很好。但是,我不会在每个需要 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/
ACF 本身使用检查来查看框架是否已加载。如果它已经被另一个插件或主题包含和调用,那么 ACF 将不会再次重新实例化它自己的 class。它通过 class 检查来做到这一点:
if (!class_exists('ACF')) {
// The ACF class doesn't exist, so you can probably redefine your functions here
}
我在我自己的依赖于 ACF 存在的插件中正是使用了这个,这样即使它碰巧被停用,整个网站也不会崩溃。
有一个 wordpress 函数:
is_plugin_active('advanced-custom-fields/acf.php');
如果 ACF 插件被停用或未安装,我想阻止 fatal error
在我的主题中。
插件的主要功能是get_field()
。
我在 functions.php
中写了这段代码来检查:
if ( !function_exists('get_field') ) {
function get_field() {
echo '<span>plugin ACF is not installed</span>';
}
}
请告诉我这是可以接受的做法吗?
是的,这是检查插件功能是否存在的好方法。
您也可以尝试is_plugin_active函数来检查插件是否激活,因为该函数可以在某处重新声明。
我认为你这样做的主要原因是为了防止致命错误,所以你可以使用哪种方式并不重要。
首先,这不是主要的插件功能,只是其中的一个。可能是主题中插件用户最常使用的。另一个是 the_field()
,它实际上打印值(get_field()
returns)。
关于定义自定义函数的做法 - 很好。但是,我不会在每个需要 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/
ACF 本身使用检查来查看框架是否已加载。如果它已经被另一个插件或主题包含和调用,那么 ACF 将不会再次重新实例化它自己的 class。它通过 class 检查来做到这一点:
if (!class_exists('ACF')) {
// The ACF class doesn't exist, so you can probably redefine your functions here
}
我在我自己的依赖于 ACF 存在的插件中正是使用了这个,这样即使它碰巧被停用,整个网站也不会崩溃。
有一个 wordpress 函数:
is_plugin_active('advanced-custom-fields/acf.php');