반응형
Woocommerce REST API 확장 주문 응답
wc-api/vX/주문/응답 연장 방법을 찾고 있습니다.체크아웃에 여러 개의 커스텀 필드(관계번호, 배송일 등)를 추가했습니다.이러한 메타는 순서(wp_postmeta 테이블) 내에 저장됩니다.그런데 왜 API와 함께 반환되지 않는 거죠?
일반적으로 다음과 같은 코드로 api 응답을 확장할 수 있습니다.
add_action( 'rest_api_init', 'custom_register_api_fields' );
function custom_register_api_fields() {
register_rest_field( 'shop_order','relation_number',
array(
'get_callback' => 'custom_api_meta_callback',
'update_callback' => null,
'schema' => null,
)
);
}
/**
*
* @param array $object Details of current post.
* @param string $field_name Name of field.
* @param WP_REST_Request $request Current request
*
* @return mixed
*/
function custom_api_meta_callback( $object, $field_name, $request ) {
return get_post_meta( $object[ 'id' ], $field_name, true );
}
그러나 Postman과 php lib를 사용하여 응답을 테스트하면 my-website.co/wc-api/v2/orders 커스텀메타가 표시되지 않습니다.
wc-api에 API 필드를 등록할 수 있는 방법이 있나요?
땡스!
같은 요건이 있습니다.새로운 값을 "line_value"에 추가하여 응답합니다.
wc api v2를 사용하고 있습니다.
https://website.com/wp-json/wc/v2/orders
function get_product_order_image( $response, $object, $request ) {
if( empty( $response->data ) )
return $response;
$order_pid= $response->data['line_items'][0]['product_id'];
$l_w_product_meta = get_post_meta($response->data['line_items'][0]['product_id']);
$order_imgUrl= wp_get_attachment_url( $l_w_product_meta['_thumbnail_id'][0], 'full' );
$response->data['line_items'][0]['cover_image'] = $order_imgUrl;
return $response;
}
add_filter( "woocommerce_rest_prepare_shop_order_object", array( $this, "get_product_order_image"), 10, 3 );
나는 이것이 미래에 누군가에게 도움이 되기를 바란다.
REST API 후크: 심플한 제품과 가변 제품 모두에 대한 응답으로 "line_items"에 새로운 가치(제품 이미지)를 추가합니다.
여러 제품에도 사용
function get_product_order_image( $response, $object, $request ) {
if( empty( $response->data ) )
return $response;
$images = array();
foreach($response->data['line_items'] as $key => $productItems){
$productID = $productItems['product_id'];
$variationID = $productItems['variation_id'];
if($variationID == 0){
$thumbnailID = get_post_meta( $productID, '_thumbnail_id', true);
$attachment = wp_get_attachment_image_src($thumbnailID, 'woocommerce_thumbnail' );
$image = $attachment[0];
}else{
$variation = new WC_Product_Variation( $variationID );
$image_id = $variation->get_image_id();
$attachment = wp_get_attachment_image_src($image_id, 'woocommerce_thumbnail' );
$image = $attachment[0];
}
$response->data['line_items'][$key]['image'] = $image;
}
return $response;
}
add_filter( "woocommerce_rest_prepare_shop_order_object", "get_product_order_image", 10, 3 );
요청:
wp-json/wc/v3/주문
wp-json/wc/v3/주문/XXX
wp-json/wc/v3/주문/?고객=XXX
언급URL : https://stackoverflow.com/questions/40802219/woocommerce-rest-api-extending-order-response
반응형
'source' 카테고리의 다른 글
div의 Outside를 클릭할 때 div를 숨기는 방법을 잘 모르겠습니다. (0) | 2023.03.23 |
---|---|
Swift를 React-Native로 브리징할 때 "인식된 Objective-C 메서드가 아닙니다"가 표시됨 (0) | 2023.03.23 |
Elixir: 키워드 목록을 지도로 변환하는 방법은? (0) | 2023.03.23 |
각각 angularjs로 된 jquery의 대체 방법은 무엇입니까? (0) | 2023.03.23 |
AJAX가 브라우저 로드 표시기를 트리거하도록 하는 방법 (0) | 2023.03.23 |