반응형
WooCommerce에서 선택한 배송 방법 제목 선택
Woo Commerceincludes\class-express-checkout-gateway.php
파일 다음 코드로 배송 방법 ID를 받습니다.
$chosen_shipping_methods = WC()->session->get('chosen_shipping_methods');
이 되다flat_rate:1
하지만 제목이 필요해Flat Rate
.
나는 이미 이 모든 대답과 더 많은 것들을 시도해 보았다.
이거 어떻게 구하지?
$rate_table = array();
$shipping_methods = WC()->shipping->get_shipping_methods();
foreach($shipping_methods as $shipping_method){
$shipping_method->init();
foreach($shipping_method->rates as $key=>$val)
$rate_table[$key] = $val->label;
}
echo $rate_table[WC()->session->get( 'chosen_shipping_methods' )[0]];
이렇게 해봐
고객이 프런트 엔드의 배송비를 계산하고 있는 경우는, 다음과 같이 됩니다.
function get_shipping_name_by_id( $shipping_id ) {
$packages = WC()->shipping->get_packages();
foreach ( $packages as $i => $package ) {
if ( isset( $package['rates'] ) && isset( $package['rates'][ $shipping_id ] ) ) {
$rate = $package['rates'][ $shipping_id ];
/* @var $rate WC_Shipping_Rate */
return $rate->get_label();
}
}
return '';
}
지정된 배송 ID의 이름을 찾을 수 없는 경우 빈 문자열이 반환됩니다.
예를 들어 2개의 다른 local_pickup과 같이 동일한 배송 방법을 두 번 사용하면 이전 방법은 작동하지 않습니다.
(우리는 '진짜' 로컬 픽업용으로 local_backs를 사용하고, 다른 하나는 카운터에서 음식을 픽업하는 고객이 구내에서 먹을 수 있도록 사용해야 했습니다.)
local_pickup의 각 인스턴스에 대한 정보를 가져오려면 다음 방법으로 db의 옵션테이블에서 직접 읽을 수 있습니다.
/**
* Assuming you have the $shipping_method_id in the form of 'local_pickup:2' for example.
* @param $shipping_method_id
* @return false
*/
function get_shipping_method_settings_from_method_id( $shipping_method_id = '' ){
if( ! empty( $shipping_method_id ) ){
// create the options key
$method_key_id = str_replace( ':', '_', $shipping_method_id );
// Get the complete option slug
$option_name = 'woocommerce_'.$method_key_id.'_settings';
// retrieve the entry from the options and return the array
return get_option( $option_name, true );
} else {
return false;
}
}
(이 wp-qa 게시물에서 제외)
위 중 어느 것도 나에게는 통하지 않는다.그래서 Woocommerce core를 살펴봤는데, 코드는 다음과 같습니다.
$chosen_shipping_methods = WC()->session->get("chosen_shipping_methods");
function get_shipping_name_by_id( $chosen_shipping_methods ) {
if(preg_match("/\d+/", $chosen_shipping_methods, $instance_id)){
$shipping_method = WC_Shipping_Zones::get_shipping_method( $instance_id[0] );
return $shipping_method->get_title();
}
return null;
}
$shipping_method_name = get_shipping_name_by_id(chosen_shipping_methods);
$current_shipping_method = WC()->session->get( 'chosen_shipping_methods' );
$packages = WC()->shipping()->get_packages();
$package = $packages[0];
$available_methods = $package['rates'];
foreach ($available_methods as $key => $method) {
if($current_shipping_method[0] == $method->id){
echo $method->label;
}
}
언급URL : https://stackoverflow.com/questions/44427219/get-chosen-shipping-method-title-by-its-id-in-woocommerce
반응형
'bestsource' 카테고리의 다른 글
AngularJS - 앵커 태그에 대해 ng-disabled가 작동하지 않음 (0) | 2023.02.23 |
---|---|
리액트 및 타입 스크립트:컨텍스트 기본값 회피 (0) | 2023.02.18 |
xhr.readystate===4의 의미 (0) | 2023.02.17 |
다른 서브도메인에서 Wordpress admin (0) | 2023.02.17 |
MongoDB의 장단점? (0) | 2023.02.17 |