Joe*_*Joe 5 php wordpress advanced-custom-fields
我想防止fatal errorACF插件被停用或未安装。
插件的主要功能是get_field()。我在自己的代码中functions.php进行了检查:
if ( !function_exists('get_field') ) {
function get_field() {
echo '<span>plugin ACF is not installed</span>';
}
}
Run Code Online (Sandbox Code Playgroud)
请告诉我这是可以接受的做法吗?
首先,这不是主要的插件功能,只是其中之一。可能是主题中插件用户最常用的。另一种是the_field(),它实际上打印值(get_field()返回它)。
关于定义自定义函数的实践 - 很好。但是,我不会在需要 ACF 字段的每个地方打印那么长的消息 - 其中一些可能很短(数字),并且此消息会破坏布局。在我看来,打印更短的内容更好。
另外,function_exists是 正确的检查,而不是is_plugin_active,因为 ACF 也可以作为带有主题框架或其他插件的库提供。
另一种选择是完全消除 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将不再重新实例化其自己的类。它通过类检查来做到这一点:
if (!class_exists('ACF')) {
// The ACF class doesn't exist, so you can probably redefine your functions here
}
Run Code Online (Sandbox Code Playgroud)
我在自己的依赖于ACF的插件中使用了此功能,因此,如果碰巧停用了它,整个站点就不会被炸毁。
| 归档时间: |
|
| 查看次数: |
4769 次 |
| 最近记录: |