高级自定义字段文档始终建议使用<?php if(get_field('repeater_field_name')): ?>
等验证启动任何内容,但当插件未激活时,此行会触发致命错误。如何避免?
答案 0 :(得分:1)
您可以尝试使用php&#39; s function_exists()
,如下所示:
<?php
if ( function_exists('get_field') && get_field('repeater_field_name') ):
// do ACF things
endif;
?>
因为&&
is a "short-cut" operator它会从L检查到R并且会挽救并立即跳过整个if
条件,如果该函数不存在(即插件被禁用)并且永远不会检查get_field('repeater_field_name')
是否评估为真。因此,您无法撤消这两个条件的顺序,或者它仍然无法使用已禁用的插件。
答案 1 :(得分:0)
您可以使用https://codex.wordpress.org/Function_Reference/is_plugin_active检查插件是否处于活动状态,但这仅适用于管理员端,在前端您必须包含plugin.php。我认为最干净的解决方案是简单地用你自己的包装函数替换这一行,例如
function my_get_field($fld) {
if function_exists('get_field') return get_field($fld);
return false; //or whatever value suits your purpose
}
或者,如果这是一种临时情况,只需定义您自己的虚拟get_field()
并在您不再需要它时将其删除。