如果未激活高级自定义字段插件,如何避免致命错误?

时间:2017-04-09 21:09:53

标签: wordpress advanced-custom-fields

高级自定义字段文档始终建议使用<?php if(get_field('repeater_field_name')): ?>等验证启动任何内容,但当插件未激活时,此行会触发致命错误。如何避免?

2 个答案:

答案 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()并在您不再需要它时将其删除。