안녕하세요, 린치핀소프트 한광희입니다.

add_action() 함수를 이용하여 기존 플러그인이나 테마의 액션 훅을 수정하거나 이용할때 특정 액션 훅에 대해서 콜백메서드로 지정되어 있는 다른 함수들의 목록을 조회하고 싶을 때가 있습니다.

add_action() 워드프레스 함수의 정의는 다음과 같습니다.

 

add_action( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 )

 

이처럼 추가되는 훅의 콜백함수는 “우선순위”에 기반하여 우선순위가 가장 낮을수록 먼저 실행되고 반대로 높을수록 가장 뒤늦게 실행됩니다.

보통 워드프레스에서 제공하는 많은 Action Hook(액션 훅)들이 많은 테마&플러그인에서 콜백함수가 지정되어 사용되고 있어서 정확히 내가 지정한 메서드가 어느 순서로 처리되며 처리과정에 다른 콜백메서드가 영향을 미치는지를 판단해야 할때가 있습니다. 이때에 유용한 전역변수가 $wp_filter 전역 변수입니다.

$wp_filter 전역 변수는 각 액션 훅별로 지정된 콜백 메서드의 “우선순위”와 “함수 이름(또는 클래스 메서드 이름)”을 배열로 가지고 있는 변수입니다. 그래서 위와 같이 각 액션훅에 테마와 플러그인이 어떠한 콜백함수를 지정하고 있는지 조회가 필요하다면 전역변수 $wp_filter를 출력하여 쉽게 알아 볼 수 있습니다.

capture__2016-08-24223

< $wp_filter를 화면에 출력하고 있는 코드 예제>

 

위 코드 예제는 전역 변수 $wp_filter를 출력하기 위해 테마 폴더 내에서 “페이지 템플릿”을 생성 한후 해당 템플릿에서 “$wp_filter”를 var_dump()함수를 이용해 웹 페이지에 출력하는 예제입니다.

$wp_filter는 모든 액션 훅의 콜백 함수 정보를 배열로 저장되고 있기 때문에 ‘wp_enqueue_scripts’ 액션 훅에 한해서만 출력할 수 있도록 배열의 “key”값을 지정하였습니다.

 

 

capture__2016-08-24232

 

< $wp_filter[‘wp_enqueue_scripts’] 출력 화면 예시>

위 화면은 $wp_fitler[‘wp_enqueue_scripts’] 를 출력한 화면 예시입니다. 위에 색으로 표시한 자주색 박스를 보면 “20”이라는 값을 가지는 우선순위 하위로 부여된 콜백함수를 표시하고 있습니다. 여기서 함수이름이 “wpcf7_html5_fallback”인 함수를 호출하고 있음을 알 수 있습니다.

 

이처럼 전역변수 $wp_filter를 사용하면 자신이 수정중이거나 추가한 모든 사용자정의 액션 훅에 대해서도 콜백 메서드의 순서와 그 내역을 조회해 볼 수 있습니다.