2015-07-23 3 views
0

Я пытаюсь удалить действие в рамках существующего WooThemes Sensei классУдалить действие в существующем классе плагина с помощью другого плагина

global $woothemes_sensei; remove_action('sensei_single_course_modules_before', array($woothemes_sensei->modules, 'course_modules_title'),20); remove_action('sensei_single_course_modules_content', array($woothemes_sensei->modules, 'course_module_content'),30);

Я не уверен, что я делаю неправильно? Я думаю, что я вызываю правильный класс с глобальной переменной. И ярлыки правильные? Я пробовал разные приоритеты.

Спасибо!

ответ

0
  1. Вы должны обернуть функции удаления в функцию и прикрепить ее к крюку, прежде чем действие будет запущено.
  2. $this здесь не имеет никакого контекста. он имеет только контекст внутри класса
  3. remove_action должны иметь один и тот же приоритет, что и add_action, что вы пытаетесь удалить
  4. The course-modules.php шаблон говорит, как именно course_modules_title действие добавляется
/** 
* Hook runs inside single-course/course-modules.php 
* 
* It runs before the modules are shown. This hook fires on the single course page,but only if the course has modules. 
* 
* @since 1.8.0 
* 
* @hooked Sensei()->modules->course_modules_title - 20 
*/ 
do_action('sensei_single_course_modules_before'); 

С помощью этого кода, как представляется, Sensei не использует глобальный класс и доступ к классу модулей осуществляется через Sensei()->modules, как указано в шаблоне. Поэтому что-то вроде следующего должно удалить ваши действия:

function so_31590319_remove_sensei_actions(){ 
    remove_action('sensei_single_course_modules_before',array(Sensei()->modules,'course_modules_title'), 20); 
    remove_action('sensei_single_course_modules_content', array(Sensei()->modules,'course_module_content'), 20); 
} 
add_action('sensei_single_course_modules_before', 'so_31590319_remove_sensei_actions', 10);