WooCommerce에서 배송 방법 가격을 업데이트하는 동적 방법
P粉605233764
2023-08-13 18:08:43
<p>내 배송 방법에 대한 배송 가격을 동적으로 업데이트하려고 합니다. API에서 배송비를 가져오고 API 응답에서 가격을 성공적으로 가져오면 가격을 업데이트하고 싶습니다. 저는 다음 코드를 사용하고 있습니다: </p>
<pre class="brush:php;toolbar:false;">function handler_api_response( $rates ) {
//API 호출 코드는 여기에 있습니다.....
if ($response_code === 200){
$response_data = json_decode($response, true);
$price = $response_data['배송']
}
add_filter( 'woocommerce_package_rates', 'set_shipping_prices', PHP_INT_MAX, 1 );
함수 set_shipping_prices( $rates ) {
foreach ( $rates as $rate_id => $rate ) {
$rates[ $rate_id ]->비용 = $price;
}
$rates를 반환합니다.
}
}</pre>
<p>위 코드는 작동하지 않지만, 필터를 handler_api_response 함수 밖으로 옮기고 수수료에 정적 값을 설정하면 작동하는 것 같습니다. 다음과 같습니다: </p>
<pre class="brush:php;toolbar:false;">function handler_api_response( $rates ) {
//API 호출 코드는 여기에 있습니다.....
if ($response_code === 200){
$response_data = json_decode($response, true);
$price = $response_data['배송']
}
}
add_filter( 'woocommerce_package_rates', 'set_shipping_prices', PHP_INT_MAX, 1 );
함수 set_shipping_prices( $rates ) {
foreach ( $rates as $rate_id => $rate ) {
$rates[ $rate_id ]->비용 = 50;
}
$rates를 반환합니다.
}</pre>
<p>내 문제는 API에서 가격 값을 가져오고 있으므로 필터가 트리거될 때 실행되는 set_shipping_prices 함수에 API 응답의 가격을 전달해야 한다는 것입니다. </p>
이 코드는 테스트되지 않았으며 약간의 조정이 필요할 수 있지만 외부 API 호출이 작동하도록 하는 올바른 경로가 될 수 있습니다.
WC_Session 변수를 사용하여 전달하려는 배송비를 설정할 수 있습니다.
으아아아그런 다음 후크 함수에서 WC_Session 변수를 호출할 수 있습니다.
으아아아그러나 캐시된 배송 방법을 적용하려면 캐시된 배송 방법을 새로 고치기 위한 다른 방법이 필요합니다.
으아아아마지막으로 WC 세션 변수를 설정 해제합니다. (체크아웃 첫 로드 및 감사 페이지) :
으아아아코드를 하위 테마의 function.php 파일(또는 플러그인)에 넣으세요. 작동할 수도 있습니다.
관련: WooCommerce 체크아웃에서 맞춤 체크박스를 선택한 후 배송비 제거