如何防止一个函数与另一个函数一起执行?

时间:2015-02-03 作者:Luis Rock

我正在尝试将LMS插件与会员插件集成。

我的目标是让所有访问者都能看到课程甚至课程页面,但共同赞助视频将仅限于成员(当然)。

我发现LMS插件函数负责显示视频HTML部分。

是否有一种方法可以编写另一个函数,以防止在用户不是成员时执行该函数(我已经准备好了该函数的if语句)。

当然,用CSS隐藏div视频元素并不是一个合理的解决方案。

我无法破解LMS插件代码,因为以后很难更新。我需要使用我自己的插件,或者在函数中插入代码来实现这一点。php文件。

因此,我的问题是:如何防止一个函数使用另一个函数执行?还是有其他方法可以做到这一点?

编辑:嗯,我刚找到一个add_action( \'lesson_video\', array( $this, \'lesson_video\' ), 10, 1 ); 在类核心文件上。还有一个do_action( \'lesson_video\', $post->ID ); 显示课程内容的php文件。所以,我想我也需要用if语句来钩住这个动作。会怎么样?

新编辑:嗯,函数在一个类中。就像是class LMS_Frontend { public function __construct () {add_action( \'lesson_video\', array( $this, \'lesson_video\' ), 10, 1 );...}

如何删除此操作?

新编辑:嗯,我终于做到了。我试图删除的操作被添加到一个类中,这个类被另一个类实例化。

我做到了:

global $varUsedWhenMainClassWasInstantiated;

remove_action(\'lesson_video\', array($varUsedWhenMainClassWasInstantiated->classLessonVar, \'custom_lesson_video\'));
希望有人能从中受益。

1 个回复
SO网友:Joey Yax

很好,你可以提前考虑,而不仅仅是编辑插件。

遗憾的是,如果插件作者没有为您提供可用的挂钩,那将很困难。可能会与作者讨论您需要的挂钩和/或进行更改并将其提交给作者以供实现。

在某些情况下,可以扩展插件类,但这取决于插件的构造和调用方式。或者,如果他们使用过滤器或操作,您也可以卸载他们的过滤器或操作,并在其位置编写自己的版本。如果没有合适的挂钩,尽管他们仍有可能做出改变,打破你的调整。

结束

相关推荐

必须使用插件自动加载器:如何正确使用get_plugins()?

我的autoloader类负责加载必须使用的插件,这些插件不位于mu-plugins 文件夹要定位它们,我需要使用get_plugins() 作用According to Codex, 该函数接受一个参数:$plugin\\u folder(string)(可选):单个插件文件夹的相对路径。我的文件层次结构如下所示:|-- /mu-plugins | |-- autoload.php // only includes wpmu/autoload.php&#