2016-08-01 4 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>'; 
    } 
} 

내 목표는 현재 '모듈'로 출력 된 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

조치를 제거하려면 클래스의 인스턴스를 찾아야합니다. 이것은 선생님의 소스 코드에 액세스 할 수 없기 때문에 가정이지만, 대부분의 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를.

희망이 도움이됩니다.

관련 문제