Skip to content

Instantly share code, notes, and snippets.

@mattallan
Last active January 29, 2019 23:32
Show Gist options
  • Save mattallan/192ef7e7e3d242bc34ff5566d4ad4cda to your computer and use it in GitHub Desktop.
Save mattallan/192ef7e7e3d242bc34ff5566d4ad4cda to your computer and use it in GitHub Desktop.
Add line item product type to orders rest api output
<?php
/**
* Plugin Name: Line item product type in Orders REST API response.
* Plugin URI:
* Description: Display the product type in the line items array returned by WC REST API Orders requests.
* Author: Prospress Inc, Matt Allan
* Author URI: https://prospress.com/
* Version: 1.0
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @author Matt Allan
* @since 1.0
*/
/**
* Add product type to the order item meta in WC REST API output
*
* @param WP_REST_Response $response
* @param WP_POST $post
* @param WP_REST_REQUEST $request
* @return WP_REST_Response $response
*/
function wcs_custom_add_product_type_api_order_item( $response, $post, $request ) {
if ( ! empty( $response->data['line_items'] ) && function_exists( 'wc_get_product' ) ) {
foreach( $response->data['line_items'] as $item_id => $line_item ) {
if ( ! empty( $line_item['product_id'] ) ) {
$product_id = ! empty( $line_item['variation_id'] ) ? $line_item['variation_id'] : $line_item['product_id'];
$product = wc_get_product( $product_id );
$response->data['line_items'][ $item_id ]['product_type'] = $product->product_type;
}
}
}
return $response;
}
add_filter( 'woocommerce_rest_prepare_shop_order', 'wcs_custom_add_product_type_api_order_item', 10, 3 );
// add_filter( 'woocommerce_rest_prepare_shop_subscription', 'wcs_custom_add_product_type_api_order_item', 10, 3 );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment