Woocommerce 쇼핑 카트에서 제품 ID 그룹을 기반으로 누적 추가 할증금 구현
개요
WooCommerce 상점 운영에서 서비스 요금, 포장 수수료 또는 특정 처리 비용과 같은 특정 제품 또는 제품 그룹을 기반으로 추가 요금이 부과됩니다. 그러나 CART에 동일한 수수료 범주에 속하는 여러 제품이 포함 된 경우 각 제품에 고정 수수료를 추가하면 수수료를 반복적으로 계산하거나 올바르게 축적 할 수 없습니다. 이 튜토리얼은 수수료 계산의 정확성과 유연성을 보장하기 위해 사용자 정의 코드를 통해 쇼핑 카트 추가 요금의 지능형 축적을 달성하기위한 강력한 방법을 소개합니다.
핵심 문제 분석
원래 문제는 __ () 함수를 사용하여 여러 제품 ID를 정의하려고하는데, 이는 일반적인 오해입니다. __ () 함수는 주로 여러 데이터 항목을 처리하지 않고 문자열의 국제화 (번역)를 위해 WordPress에 사용됩니다. 올바른 방법은 여러 제품 ID를 코드의 효율적인 매칭 및 처리를위한 배열로 정의하는 것입니다. 또한 비용 축적을 달성하려면 각 비용 범주의 총 금액을 추적하는 메커니즘이 필요합니다.
쇼핑 카트 추가 요금을 축적합니다
카트 수수료 계산 단계에서 수수료를 추가하거나 수정할 수있는 woocommerce_cart_calculate_fees 후크를 통해 사용자 정의 로직을 주입합니다.
1. 수수료 설정을 정의하십시오
먼저, 다른 추가 요금 범주를 정의하려면 명확한 구조가 필요합니다. 각 카테고리는 다음을 포함해야합니다.
- Product_id :이 비용 범주에 속하는 제품을 나타내는 제품 ID 배열.
- 금액 : 단일 제품 (또는 단위 제품 당 추가 요금).
- 이름 : 추가 요금의 표시 이름.
- TOTAL_AMOUNT :이 수수료 범주의 총 금액을 축적하는 데 사용되는 카운터는 초기 값이 0이어야합니다.
예제 설정 구조 :
// 설정 (원하는 경우 여러 설정 배열을 추가/제거 할 수 있음) $ settings = array ( 정렬( 'product_id'=> array (30, 813, 815), // 제품 ID 배열 '=> 5, // 단일 제품 비용'=> __ ( '추가 서비스 요금', 'woocommerce'), // 수수료 이름 'total_amount'=> 0, // Accumulator, ),) 정렬( 'product_id'=> 배열 (817, 819, 820), '금'=> 25, '이름'=> __ ( '포장 수수료', 'WooCommerce'), 'Total_amount'=> 0, ),) 정렬( 'product_id'=> 배열 (825), '양'=> 100, '이름'=> __ ( '다른 요금', 'WooCommerce'), 'Total_amount'=> 0, ),) );
2. 쇼핑 카트 내용을 가로 지르고 수수료를 축적하십시오
다음으로 카트의 각 항목을 반복해야합니다. 각 항목에 대해 ID가 정의 된 수수료 범주에 속하는지 확인합니다. 일치하는 경우 제품의 수량 및 세트 금액에 따라 해당 비용 범주의 Total_amount에 축적됩니다.
처리 로직 :
- 제품 ID와 현재 쇼핑 카트 항목의 수량을 얻으십시오.
- $ 설정 배열을 반복하고 일치하는 제품 ID를 찾으십시오.
- 일치가 발견되면 금액에 항목 수량을 곱한 다음 수수료 범주의 Total_amount에 추가하십시오.
코드 스 니펫 :
// 카트 내용을 통한 루프 foreach ($ cart-> get_cart_contents () as $ cart_item) { // 제품 ID를 얻습니다 $ product_id = $ cart_item [ 'product_id']; // 수량을 얻습니다 $ 수량 = $ cart_item [ '수량']; // 제품의 수량 고려 // 루프 트로프 설정 배열 (총 금액 결정) foreach ($ settings as $ key => $ setting) { // 제품 ID를 검색합니다 if (in_array ($ product_id, $ settings [$ key] [ 'product_id'])) { // 추가 : 양 * 수량 $ 설정 [$ key] [ 'total_amount'] = $ setting [ 'aUND'] * $ Quantity; } } }
3. 카트에 누적 된 수수료를 추가하십시오
모든 카트 항목 트래버살이 완료되면 $ 설정 배열에서 각 수수료 범주의 Total_amount에는 청구해야 할 총 수수료가 포함됩니다. 마지막 단계는 업데이트 된 $ 설정 배열을 반복하고 추가 요금으로 0보다 큰 Total_amount를 모두 추가하는 것입니다.
코드 스 니펫 :
// 루프 트로프 설정 배열 (출력) foreach ($ settings as $ setting) { // 0보다 큽니다 if ($ setting [ 'total_amount]]> 0) { // 수수료 추가 (이름, 금액, 과세 대상) $ cart-> add_fee ($ setting [ 'name'], $ setting [ 'total_amount'], false); } }
완전한 코드 예제
위의 논리를 WooCommerce 후크 함수에 통합합니다. 일반적으로 테마의 functions.php 파일 또는 사용자 정의 플러그인에 배치됩니다.
/** * Woocommerce 카트의 특정 제품 ID 그룹에 추가 요금을 추가하십시오. * * @param wc_cart $ cart woocommerce 쇼핑 카트 객체. */ 함수 action_woocommerce_cart_calculate_fees ($ cart) { // 배경 관리 인터페이스 충돌을 피하기 위해 프론트 엔드 또는 ajax 요청에서만 실행되었습니다. 반품; } // 요금 설정 : 각 배열은 수수료 범주를 정의합니다. // 'product_id'는이 수수료 범주에 모든 제품 ID (배열 양식)를 포함합니다. // '금액'은 단일 제품 (또는 단위당)에 대한 요금입니다. // '이름'은 쇼핑 카트에 표시되는 충전 이름입니다. // 'total_amount' $ settings = array ( 정렬( 'product_id'=> 배열 (30, 813, 815), // 예 : Product ID 30, 813, 815는 "추가 요금"입니다. '양'=> 5, '이름'=> __ ( '추가 서비스 요금', 'WooCommerce'), 'Total_amount'=> 0, ),) 정렬( 'product_id'=> array (817, 819, 820), // 예를 들어 : Product ID 817, 819, 820은 "포장 수수료"입니다. '금'=> 25, '이름'=> __ ( '포장 수수료', 'WooCommerce'), 'Total_amount'=> 0, ),) 정렬( 'product_id'=> array (825), // 예 : Product ID 825는 "기타 수수료"에 속합니다. '양'=> 100, '이름'=> __ ( '다른 요금', 'WooCommerce'), 'Total_amount'=> 0, ),) ); // 1 단계 : 쇼핑 카트 내용을 가로 지르고 각 수수료 범주의 총 금액을 축적합니다. $ product_id = $ cart_item [ 'product_id']; // 쇼핑 카트 제품의 제품 ID 받기 $ 수량 = $ cart_item [ '수량']; // 쇼핑 카트 품목의 수량을 가져 오십시오. // 모든 비용 설정을 가로 지르고 현재 쇼핑 카트 항목이 특정 수수료 범주에 속하는지 확인하십시오 ($ settings as $ key => $ setting) { // 현재 쇼핑 카트 제품의 제품 ID가 특정 수수료 범주의 제품 _id 배열에있는 경우 (in_array ($ product_id, $ settings [$ key] [ 'product_id'])) { // 제품 수량 $ 설정을 고려 하여이 수수료 범주의 총 금액을 추가하십시오 [$ key] [ 'total_amount]] = $ setting ['mold '] * $ quantity; } } } // 2 단계 : 업데이트 된 수수료 설정을 가로 지르고 CART Foreach에 누적 된 총 수수료 추가 ($ 설정으로 $ 설정) { // if ($ setting [ 'total_amount]]> 0) {add // add_fee 메소드를 사용하여 쇼핑 카트에 수수료를 추가하십시오. // 매개 변수 : 수수료 이름, 수수료 금액, 과세 대상 (거짓은 과세 대상이 없음) $ cart-> add_fee ($ setting [ 'name'], $ setting [ 'total_amount'], false); } } } add_action ( 'woocommerce_cart_calculate_fees', 'action_woocommerce_cart_calculate_fees', 10, 1);
메모 및 모범 사례
- 코드 배치 : 이 코드를 Child 테마의 functions.php 파일에 추가하거나 사용자 정의 플러그인을 통해 구현하는 것이 좋습니다. 테마가 업데이트 될 때 상위 테마 파일을 직접 수정하면 변경 사항이 손실 될 수 있습니다.
- Total_amount가하는 일 : Total_amount 필드는 $ 설정 배열에서 중요하며, 이는 쇼핑 카트를 통해 반복 할 때 각 수수료 범주의 총 금액을 추적하는 축합기 역할을합니다. 초기 값 이외의 목적을 수정하지 마십시오.
- 제품 수량 고려 : 제공된 코드는 제품 수량을 고려했습니다 ($ setting [ 'mold'] * $ voter;). 추가 요금이 제품의 수량에 영향을 미치지 않아야하는 경우 (즉, 구매 수에 관계없이 한 번 요금이 청구됩니다) $ Quantity = $ cart_item [ 'Quantity']; 라인 및 변경 $ 설정 [ '금액'] * $ 수량; [ '금액'];.
- 유지 관리 : 중앙에서 비용 설정을 중앙에서 관리하여 향후 수수료 범주의 추가, 수정 또는 삭제를 용이하게합니다.
- 세금 설정 : add_fee () 함수의 세 번째 매개 변수는 수수료가 과세 대상인지 여부를 제어합니다. 예에서 false로 설정하면 과세 대상이 아닙니다. 비즈니스 요구에 맞게 조정하십시오.
- 오류 처리 및 디버깅 : 개발 환경에서 Error_Log () 또는 var_dump ()를 사용하여 변수를 디버그하여 논리가 올바른지 확인할 수 있습니다.
요약
위의 튜토리얼을 사용하면 이제 Woocommerce 카트의 제품 ID 그룹화를 기반으로 누적 할증료를 유연하게 구현할 수 있어야합니다. 이 접근법은 여러 제품이 동일한 비용 범주에 속할 때 비용 축적 문제를 해결할뿐만 아니라 제품 수를 고려하여 WooCommerce 상점의 비용 관리 기능을 크게 향상시키는 옵션을 제공합니다. 이러한 단계와 모범 사례에 따라 사용자 정의 수수료 논리가 안정적이고 유지 관리가 쉬워집니다.
위 내용은 Woocommerce 쇼핑 카트에서 제품 ID 그룹을 기반으로 누적 추가 할증금 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Stock Market GPT
더 현명한 결정을 위한 AI 기반 투자 연구

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

usefilter_var () tovalidateemailsyntaxandcheckdnsrr () toverifydomainmxrecords.example : $ email = "user@example.com"; if (f ilter_var ($ 이메일, filter_validate_email) && checkdnsrr (Explode ( '@', $ email) [1], 'mx')) {echo "validandDeliverableEmail & qu

AseUnserialize (Serialize ($ obj))는 AllDataisserializable 이하의 경우 FordeepCopying; 그렇지 않으면, ubstract__clone () tomanuallyduplicateNestEdObjectSandavoidshartReferences.

USEARRAY_MERGE () TOCOMBINEARRAYS, DUCRITINGDUPLICATESTRINGKEYSANDENTEXINGUMERICEYS; FORSIMPLERCONCATENATION, 특히 인포드 55.6, USETHESPLATOPERATOR [... $ array1, ... $ array2].

네임 스페이스 인 네임 스페이스 inphorganizecodecodecodeandnamingnamingconflictsbygroupingclasses, 인터페이스, 함수, andconstantsOnspecificname.2.defineanamesUsUsingThenamesPaceyWordAtTHETOPOFOFILE, AFFORBINSPACENAME, suchATESKEYSTOI

이 기사에서는 케이스 문을 사용하여 MySQL에서 조건부 집계를 수행하여 특정 필드의 조건부 합산 및 계산 방법에 대해 자세히 설명합니다. 실제 구독 시스템 사례를 통해 레코드 상태 (예 : "END"및 "CANCEL"과 같은 총 기간 및 이벤트 수를 동적으로 계산하여 복잡한 조건부 집계의 요구를 충족시킬 수없는 전통적인 합계 기능의 한계를 극복하는 방법을 보여줍니다. 튜토리얼은 합 함수로 사례 문의 적용을 자세히 분석하고 왼쪽 조인의 가능한 널 값을 다룰 때 Coalesce의 중요성을 강조합니다.

The__call ()는 MethodsibleorundorundeRunded에서 정의 될 때 MethodStrigged를 정의하고, themodnameandarguments, asshowningwhendingderdefinedmethodslikesayhello ()

toupdateadaBasereCordInphp, FirstConnectusingpdoorMysqli, whenEseprepredStatementStoExecuteAcureCuresqlupDateQuery.example : $ pdo = newpdo ( "mysql : host = localhost; dbname = your_database", $ username, $ username, $ sql = "squer erestemail);

useathinfo ($ filename, pathinfo_extension) togetThefileExtension; itreliablyHandleSmultipledOtsededGecases, returningTheextension (예 : "pdf") oranEmptyStringifnoneExists.
