Php WordPress:检查插件是否已安装(ACF)
如果ACF插件被停用或未安装,我想在我的主题中防止Php WordPress:检查插件是否已安装(ACF),php,wordpress,advanced-custom-fields,Php,Wordpress,Advanced Custom Fields,如果ACF插件被停用或未安装,我想在我的主题中防止致命错误 该插件的主要功能是get\u field()。 我在functions.php中编写了这段代码来检查: if ( !function_exists('get_field') ) { function get_field() { echo '<span>plugin ACF is not installed</span>'; } } 如果(!function_存在('get_字段')){ 函数ge
致命错误
该插件的主要功能是get\u field()
。
我在functions.php
中编写了这段代码来检查:
if ( !function_exists('get_field') ) {
function get_field() {
echo '<span>plugin ACF is not installed</span>';
}
}
如果(!function_存在('get_字段')){
函数get_字段(){
echo“未安装插件ACF”;
}
}
请告诉我这是可以接受的做法?是的,这是检查插件功能是否存在的好方法
您还可以尝试使用函数检查插件是否被激活,因为函数可以在某个地方重新声明
我认为您这样做的主要原因是为了防止致命错误,因此您可以使用哪种方式并不重要。首先,这不是主要的插件功能,只是其中之一。可能是插件用户在主题中最常用的。另一个是the_field()
,它实际打印值(get_field()
返回值)
关于定义自定义函数的实践,这很好。但是,我不会在每个需要ACF字段的地方都打印长消息——其中一些可能是短消息(数字),并且此消息将破坏布局。在我看来,印短一点的更好
另外,函数是否存在
是正确的检查,而不是插件是否处于活动状态
,因为ACF也可以作为带有主题框架或其他插件的库提供
另一个选择是完全删除前端上的ACF依赖项。您可以使用get_post_meta()
输出字段的内容,并防止在前端完全加载ACF插件。有关详细信息,请参见以下两篇文章:
ACF本身使用检查来查看框架是否已加载。如果它已经被其他插件或主题包含和调用,那么ACF将不会再次重新实例化它自己的类。它通过类检查来实现这一点:
if (!class_exists('ACF')) {
// The ACF class doesn't exist, so you can probably redefine your functions here
}
我在依赖ACF存在的插件中使用了这一点,这样,如果它碰巧被停用,整个站点就不会崩溃。有一个wordpress功能:
插件是否处于活动状态('advanced-custom-fields/acf.php');
ACF可以作为主题框架或其他插件中的库提供<代码>函数_exists()
是一种更安全的检查方法。正确,但如果它是主题框架或其他插件中的库,则预期它将被主题或其他插件激活。不,不需要。如果它是作为库或composer包提供的,那么它可以作为实际库使用,通过简单的include/autoload加载。在这种情况下,它将不会作为插件激活,甚至根本不会列在插件中。它将被加载,但不是作为一个活动插件,我一直用这种方式与作曲家。它真的很酷!我永远不会想到这一点。现在我将编写质量稍好一点的代码。谢谢你的经验!