add_filter
와 add_action
은 WordPress에서 플러그인을 개발할 때 사용하는 두 가지 주요 함수입니다. 이 두 함수는 WordPress의 Hook 시스템의 일부로, 플러그인이나 테마가 WordPress의 기본 기능을 확장하거나 수정할 수 있도록 도와줍니다.
1. Hook 시스템 개요
- Actions: 특정 시점에 실행되는 함수입니다. 예를 들어, 게시글이 저장될 때 특정 작업을 실행할 수 있습니다.
- Filters: 특정 데이터를 변경할 수 있는 기회를 제공합니다. 예를 들어, 게시글 제목을 수정할 수 있습니다.
2. add_action
add_action
함수는 WordPress가 특정 Action Hook에서 실행될 때 사용자 정의 함수를 호출하도록 등록합니다. 이 함수는 주로 작업을 수행하는 데 사용됩니다.
사용 예시:
// 사용자가 로그인할 때 메시지를 로그에 기록하는 작업을 추가
function log_user_login($user_login) {
error_log("User logged in: " . $user_login);
}
add_action('wp_login', 'log_user_login');
wp_login
: 사용자가 로그인할 때 실행되는 Action Hook.log_user_login
: 사용자가 로그인할 때 실행될 사용자 정의 함수.
주요 특징:
- 동작을 추가할 때 사용.
- 기존 기능을 중단하지 않고 추가적인 작업을 수행.
3. add_filter
add_filter
함수는 특정 Filter Hook을 통해 전달되는 데이터를 수정할 때 사용됩니다. 이 함수는 주로 특정 데이터를 변경하거나 조작하는 데 사용됩니다.
사용 예시:
// 모든 게시글 제목 앞에 "Special: "를 추가
function modify_post_title($title) {
return 'Special: ' . $title;
}
add_filter('the_title', 'modify_post_title');
the_title
: 게시글 제목을 출력하기 전에 데이터를 수정할 수 있는 Filter Hook.modify_post_title
: 제목을 수정하는 사용자 정의 함수.
주요 특징:
- 데이터를 변경하거나 조작할 때 사용.
- 전달된 데이터를 수정하여 반환.
4. 비교
기능 | add_action | add_filter |
---|---|---|
목적 | 특정 시점에 작업을 추가 | 데이터를 수정하거나 필터링 |
반환값 | 없음 | 필터링된 데이터를 반환해야 함 |
사용 사례 | 사용자가 로그인할 때 이메일을 보내기 | 게시글 제목을 수정 |
훅 유형 | Action Hook | Filter Hook |
5. 심화 예시
add_action
심화 예시
사용자가 로그아웃할 때 로그를 남기고 이메일을 보낼 수 있습니다.
function notify_user_logout($user_login) {
error_log("User logged out: " . $user_login);
wp_mail('admin@example.com', 'User Logout', $user_login . ' has logged out.');
}
add_action('wp_logout', 'notify_user_logout');
add_filter
심화 예시
블로그 게시물 내용에 “이 글은 수정되었습니다.”라는 문구를 추가할 수 있습니다.
function append_modified_notice($content) {
return $content . '<p>This post has been modified.</p>';
}
add_filter('the_content', 'append_modified_notice');
6. 결론
add_action
은 WordPress에서 특정 이벤트가 발생할 때 추가 작업을 수행하도록 해줍니다.add_filter
는 WordPress에서 특정 데이터를 필터링하거나 변경할 수 있는 기회를 제공합니다.
이 두 가지를 적절히 사용하면 WordPress의 기본 기능을 훨씬 더 유연하게 확장할 수 있습니다.