이러한 WooCommerce 후크와 필터를 마스터하고 전자 상거래 웹사이트의 기능을 사용자 정의하십시오.

2분 읽기
2026-03-12
2026-06-04
2,479
아래 링크를 통해 쇼핑하면 추가 비용 없이 수수료를 받을 수 있습니다.

WooCommerce는 WordPress 생태계에서 가장 강력한 전자상거래 플러그인으로, 그 진정한 힘은 바로 즉시 사용할 수 있는 기능들뿐만 아니라 매우 확장 가능한 아키텍처에 있습니다. 이 아키텍처의 핵심은 WordPress 플러그인 API를 기반으로 하는 “훅(Hooks)”과 “필터(Filters)” 시스템입니다. 이 시스템을 이해하고 활용함으로써 개발자들은 WooCommerce의 내부 프로세스를 깊이 있게 파악하고, 핵심 코드를 수정하지 않고도 기능을 정확하게 추가, 수정, 또는 제거할 수 있으며, 이를 통해 매우 맞춤화된 전자상거래 솔루션을 구현할 수 있습니다.

WooCommerce 플러그인의 훅(Hook)과 필터(Filter) 기초

구체적인 예제를 살펴보기 전에, 두 가지 핵심 개념을 명확히 하는 것이 필요합니다: 액션 훅(Action Hooks)과 필터 훅(Filter Hooks)입니다. 이 두 가지는 모든 WooCommerce 커스터마이징의 기초가 됩니다.

add_action() 액션 훅(Action Hook)에 마운트하는 데 사용됩니다. 액션 훅은 코드가 실행되는 특정 시점에 호출되며, 그 시점에 자신만의 코드를 실행할 수 있게 해줍니다. 예를 들어, 쇼핑카트 페이지가 로드된 후 배너를 추가하거나 결제가 완료된 후 관리자에게 이메일을 보내는 경우가 이에 해당합니다. 액션 훅은 반환값을 기대하지 않으며, 단순히 “어떤 작업을 수행하는” 것을 목적으로 합니다.

추천 읽기 WordPress 플러그인 개발: 제로에서 시작하여 기능이 강력한 웹사이트 확장 기능을 구축하기

add_filter() 필터 훅에 마운트하는 데 사용됩니다. 필터 훅을 사용하면 처리 중인 데이터를 “수정”할 수 있습니다. 예를 들어, 상품 가격의 계산 방식을 변경하거나, 배송비 라벨의 텍스트를 수정하거나, 주문 번호 생성 규칙을 조정하는 것이 가능합니다. 필터 훅은 수정된 값을 반환할 것으로 기대합니다.

UltaHost의 WordPress 호스팅 서비스
30일 환불 보장, 무제한 대역폭 및 데이터베이스 이용, 무료 DDoS 보호 서비스 제공. 3년 구매 시 50% 용량이 할인됩니다.

간단한 기억 방법은 다음과 같습니다: “액션(Action)은 실행하는 것이고, 필터(Filter)는 수정하는 것입니다.” 거의 모든 WooCommerce 커스터마이징 작업에서 이 두 가지 요소를 사용하지 않을 수 없습니다.

핵심 액션 후크(Core Action Hook)의 응용 시나리오

액션 훅(Action Hooks)은 WooCommerce의 전체 라이프사이클에 걸쳐 존재하며, 상품 표시부터 주문 완료에 이르기까지 모든 과정에 활용됩니다. 몇 가지 핵심적인 액션 훅을 숙지하면 사용자의 여정에서 중요한 단계들에 사용자 정의 로직을 삽입할 수 있습니다.

상품 상세 페이지에 사용자 정의 콘텐츠를 추가합니다.

woocommerce_before_add_to_cart_form 그리고 woocommerce_after_add_to_cart_form 이것은 “장바구니에 추가” 버튼이 있는 폼의 앞뒤에서 실행되는 두 개의 후크(hook)입니다. 가변적인 상품과 같은 복잡한 상품의 폼 앞에 안내 메시지를 표시하고 싶다면 다음과 같이 처리할 수 있습니다:

add_action( 'woocommerce_before_add_to_cart_form', 'custom_before_add_to_cart_message' );
function custom_before_add_to_cart_message() {
    global $product;
    if ( $product->is_type( 'variable' ) ) {
        echo '<p class="custom-note">먼저 필요한 사양 정보를 선택해 주세요.</p>';
    }
}

결제 프로세스에 추가 단계를 삽입합니다.

woocommerce_before_checkout_form 그리고 woocommerce_after_checkout_form 결제 양식의 시작과 끝에 내용을 추가할 수 있도록 허용합니다. woocommerce_checkout_before_customer_details 그리고 woocommerce_checkout_after_customer_details 따라서 고객 정보 영역의 앞뒤에 더 정확하게 위치하게 됩니다. 이러한 ‘훅(hook)’들은 배송 정책, 쿠폰 안내, 또는 신뢰성을 나타내는 배지를 표시하는 데 자주 사용됩니다.

추천 읽기 WooCommerce 플러그인 개발 가이드: 제로에서 시작하여 맞춤형 전자상거래 기능을 구축하기

핵심 필터의 주요 사용 사례 (Core Filter Use Cases):

필터를 사용하면 WooCommerce가 출력하는 데이터와 텍스트를 세밀하게 조정할 수 있으며, 이는 비즈니스 규칙을 구현하고 개인화된 디스플레이를 만드는 데 매우 유용한 도구입니다.

가격 표시 형식을 수정합니다.

woocommerce_get_price_html 필터는 상품 가격의 HTML 출력을 거르는 데 사용됩니다. 모든 할인 상품의 가격 뒤에 “(판매 중)”이라는 문구를 추가하고 싶다면 다음과 같이 구현할 수 있습니다:

add_filter( 'woocommerce_get_price_html', 'custom_price_suffix', 10, 2 );
function custom_price_suffix( $price, $product ) {
    if ( $product-&gt;is_on_sale() ) {
        $price .= ' <span class="sale-badge">(프로모션 중)</span>';
    }
    return $price;
}

커스텀 쇼핑카트 및 결제 정보 필드

woocommerce_checkout_fields 이것은 매우 강력한 필터로, 결제 페이지에 있는 모든 필드를 추가, 삭제, 수정 또는 재정렬할 수 있게 해줍니다. 예를 들어, “회사 이름” 필드를 필수 항목으로 설정하거나 “주소 2” 필드의 레이블을 수정하고 싶다면 가능합니다.

호스팅닷컴 공유 호스팅
AMD EPYC CPU, NVMe SSD 스토리지 및 LiteSpeed를 통한 고성능, 연중무휴 24시간 전문가 사내 지원, SSL, 무차별 공격, 멀웨어 및 DDoS 보호를 포함한 고급 보안 조치, 최대 73%의 비용 절감.
add_filter( 'woocommerce_checkout_fields', 'customize_checkout_fields' );
function customize_checkout_fields( $fields ) {
    // 将“公司名称”设为必填
    $fields['billing']['billing_company']['required'] = true;

// 修改“地址行2”的标签和占位符
    $fields['billing']['billing_address_2']['label'] = '公寓、套房、单元等(可选)';
    $fields['billing']['billing_address_2']['placeholder'] = '';

return $fields;
}

고급 실전: 훅과 필터의 조합 사용

진정한 맞춤화를 위해서는 액션(Action)과 필터(Filter)를 조합하여 사용해야 하며, 보다 복잡한 비즈니스 로직을 작성해야 합니다.

커스텀 주문 상태를 생성합니다.

WooCommerce에는 다양한 주문 상태가 기본으로 제공되지만, “배송 대기 중”과 같은 추가적인 상태를 추가해야 할 수도 있습니다. 이를 위해서는 필터를 조합하여 상태를 정의하고, 상태가 변경될 때 수행될 작업을 관리하는 액션을 설정해야 합니다.

먼저, 사용하기 위해… wc_order_statuses 필터 등록 새 상태:

추천 읽기 우커머스(WooCommerce) 전자상거래 웹사이트 개발: 온라인 상점을 처음부터 구축하는 방법

add_filter( 'wc_order_statuses', 'add_custom_order_status' );
function add_custom_order_status( $order_statuses ) {
    $order_statuses['wc-awaiting-prep'] = '待配货';
    return $order_statuses;
}

그런 다음, 관리자 주문 목록에서 해당 기능을 사용할 수 있습니다. woocommerce_order_actions 필터에 해당 상태를 수동으로 설정할 수 있는 버튼을 추가하세요. woocommerce_order_action_* 상태가 업데이트된 후에 필요한 로직을 처리하기 위한 사용자 정의 액션을 만들 수 있습니다. 예를 들어, 저장소 관리자에게 이메일로 알림을 보내는 것이 그러한 액션의 한 예입니다.

쇼핑카트 내용에 따라 기능을 동적으로 조정하는 기능

당신은 감시할 수 있습니다. woocommerce_before_calculate_totals 이 작업은 총액을 계산하기 전에 장바구니에 있는 상품의 가격이나 속성을 수정하는 것을 포함합니다. 또한, 이 과정은 다른 기능들과도 결합될 수 있습니다. woocommerce_cart_item_name 필터를 사용하여 쇼핑카트 테이블에 이러한 변경 사항과 관련된 사용자 정의 정보를 동적으로 표시합니다.

InterServer 공유 호스팅
공유 호스팅 월 $2.50 USD, 첫 달 $0.1 USD 프로모션 코드 tryinterserver, 461개 클라우드 앱 스크립트, 원클릭 설치.

예를 들어, 쇼핑카트에 특정 카테고리의 상품이 있는지를 확인하고, 그런 경우 다른 카테고리의 상품에 할인을 제공하며 그 상품 이름 옆에 “조합 할인”이라는 태그를 표시해야 합니다. 이를 위해서는 WooCommerce의 쇼핑카트 객체에 대한 깊은 이해가 필요하며, 세션(session)과 캐시(cache)를 적절하게 처리해야 합니다.

요약

WooCommerce의 훅(hook)과 필터(filter) 시스템은 강력하면서도 정교한 추상화 계층으로, 핵심 코드의 안정성과 확장성을 완벽하게 결합합니다. 간단한 텍스트 수정부터 복잡한 비즈니스 프로세스의 재구성에 이르기까지, 개발자는 이 시스템을 통해 원하는 대로 웹사이트 기능을 확장하고 수정할 수 있습니다. add_action 그리고 add_filter 이 두 함수가 작동합니다. 성공적으로 커스터마이징을 하는 데 있어 핵심은 다음과 같습니다: 첫째, 라이프사이클 내에서 해당하는 후크(hook)를 정확하게 찾는 것; 둘째, 전달되는 매개변수와 상황을 이해하는 것; 셋째, 효율적이고 안전한 콜백 함수를 작성하는 것입니다. 이러한 후크들을 체계적으로 학습하고 실습함으로써, 주제나 플러그인의 제약을 극복하고 비즈니스 요구사항에 완전히 부합하는 독특한 전자상거래 웹사이트를 만들 수 있을 것입니다.

자주 묻는 질문

어떻게 사용 가능한 WooCommerce 플러그인(훅)을 찾을 수 있나요?

가장 직접적인 방법은 WooCommerce 공식 개발자 문서를 참고하는 것입니다. 그 문서에는 “후크 참조”라는 전용 섹션이 있습니다.
또한, WordPress 웹사이트의 코드 파일에서 텍스트 편집기의 검색 기능을 사용하여 WooCommerce 플러그인 디렉터리 내에서 “do_action”과 “apply_filters”를 검색함으로써 훅(hook)의 정의를 찾을 수 있습니다. 또한, 일부 제3자 플러그인이나 코드 조각 라이브러리를 활용하여 자주 사용되는 훅들을 살펴볼 수도 있습니다.

제 사용자 정의 코드는 어디에 두어야 하나요?

최선의 방법은 사용자 정의 코드를 서브테마(sub-theme)에 추가하는 것입니다. functions.php 파일 내에 있습니다. 이렇게 하면 주제가 업데이트되더라도 여러분이 한 수정 사항이 덮어쓰이지 않도록 보장됩니다.
만약 코드의 양이 많거나 기능이 독립적이라고 예상된다면, 모든 WooCommerce 커스텀 코드를 관리하기 위한 전용 기능 플러그인을 만들 수도 있습니다. 절대로 WooCommerce 플러그인이나 부모 테마의 핵심 파일을 직접 수정하지 마십시오.

왜 제 필터가 작동하지 않나요?

먼저, 콜백 함수의 우선순위를 확인해 보세요.add_filter (세 번째 매개변수를 사용하는 경우) 이 값이 적절한지 확인해야 합니다. 숫자가 작을수록 우선순위가 높아지며, 더 빨리 실행됩니다. 다른 플러그인이 동일한 값을 수정한 후에 실행된다면(우선순위 숫자가 더 크다면), 그 수정 사항이 여러분의 변경 사항을 덮어쓸 수 있습니다.
其次,确保你的回调函数正确返回了值。过滤器函数必须有一个 return 语句。
마지막으로, 훅(hook)의 이름이 올바르게拼写되었는지 확인하고, 훅이 실행된 후에 여러분의 코드가 정상적으로 로드되었는지도 확인해 주세요.

액션(Action)과 필터(Filter)는 제거할 수 있나요?

네, 사용하셔도 됩니다. remove_action() 그리고 remove_filter() 함수를 사용하면 이미 추가된 후크 콜백을 제거할 수 있습니다. 하지만 이를 위해서는 콜백 함수가 등록될 때 사용된 함수명, 우선순위 등의 정보를 알고 있어야 하며, 원래의 후크가 추가된 이후에 실행되기 전에 제거를 수행해야 합니다. 이 작업은 다른 플러그인이나 테마의 기능을 손상시킬 수 있으므로 신중하게 진행해야 합니다.

어떻게 훅(hook)의 실행 순서와 매개변수를 디버깅할 수 있을까요?

디버깅 도구를 사용하는 것이 가장 효율적인 방법입니다. “Query Monitor”와 같은 WordPress 디버깅 플러그인을 설치하십시오. 이 플러그인에는 페이지가 로드되는 과정에서 실행되는 모든 훅(hook), 그들의 콜백 함수(callback function), 우선순위(priority), 그리고 매개변수参数를 나열해 주는 전용 패널이 있습니다. 이는 복잡한 프로세스를 이해하고 충돌을 찾아내는 데 매우 중요합니다. 또한, 반드시… wp-config.php 중에서 시작합니다. WP_DEBUG 패턴.