如何在插件文件中取消挂钩WordPress动作挂钩?

时间:2016-08-01 14:46:18

标签: php wordpress

我正在尝试从我的子主题functions.php文件中取消挂钩并修改操作。

WordPress插件Sensei在本文档的第86行添加了此操作。

https://github.com/Automattic/sensei/blob/master/includes/class-sensei-modules.php#L86

该操作引用页面下方的一个函数,该函数负责输出动态标题元素。

/**
 * Show the title modules on the single course template.
 *
 * Function is hooked into sensei_single_course_modules_before.
 *
 * @since 1.8.0
 * @return void
 */

public function course_modules_title( ) {
   if( sensei_module_has_lessons() ){
        echo '<header><h2>' . __('Modules', 'woothemes-sensei') . '</h2></header>';
    }
}

我的目标是将html当前输出更改为&#39; Modules&#39;别的什么。

我在我的子主题functions.php文件中尝试了以下内容,但似乎都没有工作。

remove_action( 'sensei_single_course_modules_before', array( 'Sensei_Core_Modules', 'course_modules_title' ), 20);

remove_action( 'sensei_single_course_modules_before', array( 'Sensei()->Sensei_Core_Modules', 'course_modules_title' ), 20);

问题是,我不知道如何确定将哪个初始参数添加到数组中以调用正确的类。因为我在外部访问它,所以我不能使用$this,因为它正在核心文件中使用。

1 个答案:

答案 0 :(得分:0)

要删除操作,您必须找到该类的实例。这是一个假设,因为我无法访问Sensei的源代码,但是因为大多数WordPress插件都使用这种方法,所以很有可能。

当您找到实例名称时,可以使用global $senseiInstance加载它 - 将其替换为变量的实际名称。

然后您可以使用例如以下代码删除操作:

remove_action( 'sensei_single_course_modules_before', array( $senseiInstance, 'course_modules_title' ), 20);

更多信息可以在例如本文中找到:https://www.sitepoint.com/digging-deeper-wordpress-hooks-filters

希望这会帮助你!