2016-08-01 71 views
0

我想從我的子主題functions.php文件中解除並修改一個動作。如何在插件文件中解除WordPress動作鉤子?

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>'; 
    } 
} 

我的目標是將當前輸出爲'Modules'的html改爲別的。

我已經嘗試了以下在我的子主題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,因爲它正在覈心文件中使用。

回答

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

希望這可以幫助你!