I want to keep these here

WordPress plugin 개발에서 add_filter와 add_action의 차이

add_filteradd_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_actionadd_filter
목적특정 시점에 작업을 추가데이터를 수정하거나 필터링
반환값없음필터링된 데이터를 반환해야 함
사용 사례사용자가 로그인할 때 이메일을 보내기게시글 제목을 수정
훅 유형Action HookFilter 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의 기본 기능을 훨씬 더 유연하게 확장할 수 있습니다.


Posted

in

,

by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *