고급 가이드: WooCommerce의 후크와 필터를 사용하여 전자 상거래 웹사이트를 사용자 정의하는 방법

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

WooCommerce 훅과 필터: 기능과 차이점

WooCommerce 맞춤 개발을 진행할 때 그 두 가지 주요 확장 메커니즘인 훅과 필터를 이해하는 것은 매우 중요합니다. 이들은 모두 WordPress 핵심 아키텍처의 중요한 구성 요소이지만, 서로 다른 목적에 사용됩니다.

Hooks(훅)은 WooCommerce가 코드 실행의 특정 생명주기 지점에서 미리 마련해 둔 인터페이스로, 여러분이 자신의 코드를 “걸어” 새로운 동작이나 기능을 실행할 수 있도록 해줍니다. 훅은 두 가지 유형으로 나뉩니다:Actions(동작) 그리고Filters(필터). 간단히 말해, 액션 훅은 “무언가를 하기” 위해 사용되며 어떤 값도 반환하지 않고, 단지 특정 시점에 사용자 정의 코드를 실행할 기회를 제공합니다. 예를 들어, 장바구니 페이지가 로드된 후 배너를 추가하는 것입니다. 필터 훅은 “무언가를 수정하기” 위해 사용되며, 값을 받아 그 값을 수정할 수 있게 하고, 그런 다음 수정된 값을 반드시 반환해야 합니다. 예를 들어, 상품 가격의 표시 형식을 수정하는 것입니다.

Filters(필터)는 훅의 한 종류이지만, 그 고유한 “수정하고 반환” 의미론 때문에 보통 논의할 때 액션 훅과 병렬적으로 언급됩니다. 흔한 오해 중 하나는 액션 훅을 사용해 값을 반환하려고 시도하는 것인데, 이는 코드가 작동하지 않게 만듭니다. 당신의 요구가 “작업 수행”인지 “데이터 수정”인지를 명확히 구분하는 것은 올바른 도구를 선택하는 첫걸음입니다.

추천 읽기 WordPress 核心 후크와 필터에 대해 자세히 알아보자: 입문서부터 실제 프로그래밍까지

핵심 훅 및 필터 인터페이스

후크와 필터를 사용하려면 주로 워드프레스가 제공하는 몇 가지 핵심 함수에 의존합니다. 이러한 함수를 숙지하는 것은 모든 사용자 정의를 수행하는 기초입니다.

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

액션 훅의 핵심 함수

가장 많이 사용되는 함수는add_action()이 함수는 사용자 정의 함수를 지정된 액션 훅에 “구독”하는 데 사용됩니다. 기본 구문에는 훅 이름, 콜백 함수, 우선순위, 그리고 허용되는 인수의 개수가 포함됩니다. 우선순위는 여러 함수가 동일한 훅에 연결되었을 때의 실행 순서를 결정하며, 숫자가 작을수록 우선순위가 높습니다.

add_action(‘woocommerce_before_add_to_cart_button’, ‘my_custom_message’, 10, 0 );
function my_custom_message() {
    echo ‘<p>구매 전에 규격을 확인해 주세요!</p>’;
}

위 코드는 “장바구니에 추가” 버튼 앞에 사용자 정의 안내 문구를 출력합니다.

필터 훅의 핵심 함수

对应的,修改数据需要使用add_filter()함수. 그것의 구조는add_action()类似,但你的回调函数必须接收一个输入值并返回一个值。

add_filter( ‘woocommerce_currency_symbol’, ‘change_currency_symbol’, 10, 2 );
function change_currency_symbol( $currency_symbol, $currency ) {
    if ( $currency == ‘USD’ ) {
        $currency_symbol = ‘US$’;
    }
    return $currency_symbol;
}

이 예에서는 달러 기호를 “$”에서 “US$”로 변경합니다.

추천 읽기 전자상거래 전환율 향상: 우커머스 제품 페이지 최적화 전략에 대한 심층 분석

실제 사례: 사용자 정의 제품 페이지

产品页面是WooCommerce的关键部分,通过钩子可以极大地改变其布局和信息展示。以下几个钩子能帮助你精准定位修改点。

在“加入购物车”区域前添加内容

woocommerce_before_add_to_cart_form그리고woocommerce_before_add_to_cart_button두 가지 자주 사용되는 훅입니다. 전자는 전체 양식 앞에서 트리거되어 배너나 경고 블록을 추가하기에 적합하고, 후자는 수량 입력란과 버튼 사이에서 트리거되어 짧은 설명이나 체크박스를 추가하기에 적합합니다.

add_action( ‘woocommerce_before_add_to_cart_button’, ‘add_product_notes_field’ );
function add_product_notes_field() {
    echo ‘<div class="“product-notes”"><label>맞춤 요구사항:</label><textarea name="“customer_notes”"></textarea></div>’;
}

修改产品摘要的输出

제품 짧은 설명 작성자woocommerce_short_description필터 제어. 이를 통해 설명 내용을 수정할 수 있으며, 예를 들어 모든 설명 뒤에 공통 텍스트를 추가할 수 있습니다.

호스팅닷컴 공유 호스팅
AMD EPYC CPU, NVMe SSD 스토리지 및 LiteSpeed를 통한 고성능, 연중무휴 24시간 전문가 사내 지원, SSL, 무차별 공격, 멀웨어 및 DDoS 보호를 포함한 고급 보안 조치, 최대 73%의 비용 절감.
add_filter( ‘woocommerce_short_description’, ‘append_to_short_description’ );
function append_to_short_description( $desc ) {
    $desc .= ‘<p><em>본 제품은 7일 이내 이유 없이 반품을 지원합니다.</em></p>’;
    return $desc;
}

실전 사례: 사용자 정의 장바구니 및 결제 프로세스

购物车和结算页是转化流程的核心环节,对其进行优化能直接提升用户体验和订单完成率。

在购物车表格后添加全局信息

woocommerce_after_cart_table钩子允许你在购物车项目表格之后、购物车汇总之前插入内容,比如促销代码提示或运费预估说明。

add_action( ‘woocommerce_after_cart_table’, ‘add_cart_promotion_notice’ );
function add_cart_promotion_notice() {
    echo ‘<div class="“cart-promotion”">500위안 이상 구매 시 무료배송!</div>’;
}

修改结算字段

WooCommerce의 결제 필드 시스템은 매우 높은 수준으로 구성 가능하며, 필터를 광범위하게 사용합니다. 예를 들어, “주소 2” 필드의 라벨과 플레이스홀더를 수정하려면 다음을 사용할 수 있습니다.woocommerce_default_address_fields또는 더 구체적으로 말하자면…woocommerce_billing_fields필터.

추천 읽기 우커머스 튜토리얼: 강력한 워드프레스 전자상거래 웹사이트를 제로 부터 구축하는 방법

add_filter( ‘woocommerce_default_address_fields’, ‘modify_address_2_field’ );
function modify_address_2_field( $fields ) {
    if ( isset( $fields[‘address_2’] ) ) {
        $fields[‘address_2’][‘label’] = ‘公寓、套房、单元等(可选)’;
        $fields[‘address_2’][‘placeholder’] = ‘可不填’;
    }
    return $fields;
}

通过这种方式,你可以隐藏、重排、重命名或添加任何结算字段,使其完全匹配你的业务需求。

요약

WooCommerce의 훅과 필터를 통한 사용자 정의를 사용하면 핵심 코드를 수정하지 않고도 전자상거래 웹사이트의 모든 세부 사항을 깊이 있게 맞춤 설정할 수 있습니다. 액션과 필터의 근본적인 차이를 이해하는 것부터 시작하여, 익히세요add_action()그리고add_filter()이 두 가지 핵심 함수를 바탕으로, 제품 페이지, 장바구니 및 결제 프로세스 등 핵심 영역에서 실습을 진행하면 점차 매우 개인화되고 강력한 온라인 스토어를 구축할 수 있습니다. 기억하세요. 사용자 지정 코드는 항상 자식 테마에 추가해야 합니다.functions.php파일에서 또는 사용자 정의 플러그인을 통해 이를 구현할 수 있으며, 이는 업데이트의 안전성을 보장하는 모범 사례입니다.

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

자주 묻는 질문

### 我的自定义代码应该放在哪里?
가장 안전하고 권장되는 방법은 현재 사용 중인 테마의 자식 테마에 넣는 것입니다functions.php파일 안에.

이렇게 하면 테마가 업데이트될 때 사용자 정의 코드가 덮어써지지 않도록 할 수 있습니다. 자식 테마를 사용하지 않는 경우에는 이러한 코드를 보관하기 위한 전용 사용자 정의 기능 플러그인을 만들어도 됩니다.

如何找到我需要的特定钩子或过滤器?

WooCommerce 공식 개발자 문서를 참고하시면, 그 안에 자세한 훅 인덱스가 제공되어 있습니다.

此外,在WordPress后台的代码编辑器中,或使用诸如“Simply Show Hooks”这样的插件,可以直接在前端页面上可视化显示当前页面可用的所有钩子,这对于快速定位非常有效。

使用了钩子但代码没有生效,如何排查?

우선, 코드에 구문 오류가 있는지 확인하세요. 이는 PHP 파싱 실패를 초래할 수 있습니다. 콜백 함수가 올바르게 정의되어 있는지 확인하고,add_action또는add_filter的优先级和参数数量正确。

其次,确认钩子名称是否正确,以及它是否确实在你期望的页面位置被执行。使用error_log또는var_dump간단한 디버깅 출력을 수행하면 함수가 호출되었는지 판단하는 데 도움이 됩니다.

WooCommerce 템플릿 파일을 수정하는 것과 훅을 사용하는 것에는 어떤 차이가 있나요?

直接覆盖WooCommerce的模板文件(复制到你的主题目录下)是一种改变外观和结构的直接方法,但它通常用于修改HTML输出结构。

而钩子则更适合用于添加新功能、修改数据或在特定位置注入内容。钩子提供了更高的灵活性和可维护性,尤其是在进行逻辑功能扩展时,应作为首选方案。模板覆盖和钩子技术常常结合使用,以达到最佳效果。