워드프레스 add_filter 이해

워드프레스에서 add_filter는 함수를 특정 필터 액션에 후크하는 역할을 합니다(WordPress Codex 페이지 참고). add_filter는 다음과 같이 사용됩니다.

<?php add_filter( $tag, $callback_function, $priority, $accepted_args ); ?>
  • $tag는 후크할 필터 이름입니다.
  • $callback_function은 말 그대로 사용자 지정된 필터가 적용될 때 호출(call)되는 함수의 이름입니다.
  • $priority는 옵션으로, 특정 액션과 관련된 함수가 실행되는 순서(우선순위)를 지정하는 데 사용됩니다. 기본값은 10으로 보통 10으로 설정하거나 생략할 수 있습니다.
  • $accepted_args는 함수에 사용되는 인수(argument)의 개수입니다.

위의 내용이 WordPress Codex 페이지에 설명된 내용입니다. 워드프레스를 처음 접하거나 프로그램 언어를 잘 모르는 초보자가 이해하기에는 쉽지 않은 내용 같습니다. 그래서 간단한 예를 통해 실제로 어떻게 작동하는지를 살펴보겠습니다.

다음과 같은 간단한 함수를 한번 생각해봅시다.

function return_hello() {
    $text = 'Hello World';
    return $text;
}

이 경우 직접 함수를 수정하지 않으면 출력 내용을 바꿀 수가 없습니다. 이것을 조금 수정하여 필터를 적용해보면:

function return_hello() {
    $text = 'Hello World';
    $text = apply_filters( 'output_hello_filter', $text );
    return $text;
}

이 함수도 "Hello World"를 출력하는 함수이지만, 원하는 경우 필터 "output_hello_filter"를 사용하여 테마(혹은 자식 테마)에서 추가적인 작업을 할 수 있습니다. 가령 다음과 같이 add_filter를 사용하여 다른 내용을 출력할 수 있도록 만들 수 있습니다.

function new_hello_filter( $text ) {
    $text = 'How are you?';
    return $text;
}
add_filter( 'output_hello_filter', 'new_hello_filter' );

이제 return_hello() 함수는 "Hello World"가 아닌 "How are you?"를 출력합니다.

쉽게 이해하자면 이름 그대로 add_filter(필터 추가)를 통해 필터를 지정하고, 지정된 필터가 apply_filters(필터 적용)를 통해 적용된다고 생각하면 될 것 같습니다.

필터가 사용되었는지 여부는 소스에서 apply_filters를 검색하여 확인할 수 있습니다.
apply_filters in WordPress

필터를 사용하면 테마나 플러그인의 소스를 변경하지 않고 테마 함수 파일에 add_filter를 통해 원하는 대로 변경할 수 있습니다. 그리고 이 경우 테마나 플러그인이 업데이트되더라도 번거롭게 소스를 다시 수정할 필요가 없게 됩니다.

참고:

일부 글에 제휴 링크가 포함될 수 있으며 파트너스 활동으로 일정액의 수수료를 받을 수 있습니다.

댓글 남기기

* 이메일 정보는 공개되지 않습니다.