如果没有启用插件,并且在主题文件中调用了一个方法,如何防止出现PHP致命错误?

时间:2015-08-12 作者:user1462

我使用OOP创建了一个WordPress插件。如果插件尚未激活,并且在主题文件中调用了一个方法,则会抛出PHP致命错误“调用未定义的函数”。

如果插件没有启用,那么正确的方法是什么?

是否应该在主题目录中使用该类的每个文件中进行检查,以查看该类是否存在?还是应该让错误保持原样,让用户知道必须根据函数名启用插件?

以下是我想做的:

if ( mypluginname_is_event_active() ) {
  echo \'it is!\';
}
但是,如果插件尚未激活,上述代码将触发PHP致命错误。

下面的代码可以防止出现错误,但它看起来确实很笨拙。尤其是如果必须在主题下使用的每个文件中执行此操作:

// begin top of file
$is_event_live = false;

if ( class_exists( \'MyPluginName\' ) ) {
  $is_event_live = mypluginname_is_event_active();
}
// end top of file

if ( $is_event_live ) {
  echo \'it is!\';
}

2 个回复
SO网友:Brian Fegter

插件是最基本意义上的PHP包含。如果函数未在PHP中注册,则无法调用该函数。如果插件未激活,则不会包含该插件,且功能未知。你不能叫它。我建议您将此用作must-use plugin 因此,它的可用性是一致的和可预测的。

SO网友:mmm

要链接插件和主题,我建议您使用挂钩
在主题中,使用do_action("under_the_picture");. 在插件中,您可以创建如下挂钩:

add_action("under_the_picture", function () {
    echo "plugin data to display under the picture";
});
然后,当插件未激活时,“图片下方”的主题位置为空,没有错误。

结束

相关推荐

While loop with bootstrap

可以从引导程序中使用手风琴进行while循环吗?我正在尝试从高级自定义字段中使用repeater add pro附加组件制作常见问题部分。所有的问题都出现了,但他们都找到了第一个答案。我怎样才能做到这一点? <div class=\"panel-group\" id=\"accordion\" role=\"tablist\" aria-multiselectable=\"true\"> <?php if(get_field(\'faq_general_