데브포일 홈
WordPress 자동화
Guest
STAGE 13 · Lv.61

훅(Hook) 시스템 - 액션과 필터

WordPress의 핵심인 훅 시스템을 깊이 있게 학습합니다. add_action, add_filter, remove_action, 우선순위, 인자 수, 커스텀 훅 생성, do_action, apply_filters를 마스터합니다.

WordPress 훅 시스템의 핵심 개념

훅이란 무엇인가?

WordPress의 훅(Hook) 시스템은 이벤트 기반 프로그래밍의 핵심입니다. 훅을 통해 WordPress 코어, 테마, 플러그인의 동작을 수정하거나 확장할 수 있습니다. WordPress 코어에는 약 2,500개 이상의 훅이 존재하며, 플러그인과 테마가 추가하는 커스텀 훅까지 포함하면 훨씬 많습니다.


훅은 크게 두 가지 종류로 나뉩니다:


액션(Action): 특정 시점에 코드를 "실행"합니다. 반환값이 없습니다. 예: 포스트가 저장될 때 이메일 보내기, 페이지 로드 시 스타일시트 추가하기.


필터(Filter): 데이터를 "변환"하여 반환합니다. 반드시 값을 반환해야 합니다. 예: 포스트 제목 수정하기, 발췌문 길이 변경하기, 로그인 URL 변경하기.

Action
"이 시점에 이것을 실행해라"
🔄
Filter
"이 데이터를 이렇게 바꿔라"
🎯
WP 코어/플러그인이
do_action() 호출
📋
등록된 콜백을
우선순위 순 정렬
▶️
각 콜백을
순서대로 실행
Action: 실행 완료
Filter: 값 반환

add_action() 완전 정복

add_action()의 모든 매개변수

add_action()은 특정 액션 훅에 콜백 함수를 등록하는 함수입니다. WordPress가 해당 액션을 실행(do_action)할 때 등록된 콜백이 호출됩니다.

// add_action() 전체 시그니처 add_action( $hook_name, // (string) 훅 이름 $callback, // (callable) 실행할 콜백 함수 $priority = 10, // (int) 우선순위 (낮을수록 먼저 실행) $accepted_args = 1 // (int) 콜백이 받을 인자 수 );

다양한 콜백 형태

WordPress 훅에는 여러 형태의 콜백을 등록할 수 있습니다. 각각의 장단점을 알아봅시다.

// 1. 일반 함수 function my_custom_init() { // 초기화 코드 } add_action('init', 'my_custom_init'); // 2. 익명 함수 (클로저) add_action('wp_head', function() { echo '<meta name="generator" content="My Plugin">'; }); // 3. 클래스 메서드 (인스턴스) class My_Plugin { public function __construct() { add_action('init', [$this, 'register_post_type']); } public function register_post_type() { // CPT 등록 } } // 4. 정적 메서드 class My_Utils { public static function cleanup() { // 정리 코드 } } add_action('wp_footer', ['My_Utils', 'cleanup']); // 5. Invokable 클래스 (__invoke 매직 메서드) class My_Handler { public function __invoke($content) { return $content . '<p>추가 콘텐츠</p>'; } } add_filter('the_content', new My_Handler());
익명 함수의 함정
익명 함수(클로저)로 등록한 훅은 나중에 remove_action()으로 제거할 수 없습니다. 제거가 필요한 훅이라면 반드시 이름이 있는 함수나 클래스 메서드를 사용하세요. 이 점은 다른 개발자가 여러분의 플러그인을 커스터마이즈할 때 중요합니다.
🔒
여기까지는 미리보기입니다
훅(Hook) 시스템 - 액션과 필터
무료 가입하면 이어서 볼 수 있고, 강의를 완료할 때마다 XP와 레벨이 쌓입니다.
Google로 3초 만에 시작 →🧵 Threads로 시작무료 공개 강의 둘러보기 (Lv.1~3)