WC_API_Resource::maybe_add_meta( array $data, object $resource )
Add meta to resources when requested by the client. Meta is added as a top-level <resource_name>_meta
attribute (e.g. order_meta
) as a list of key/value pairs
Description Description
Parameters Parameters
- $data
-
(Required) the resource data
- $resource
-
(Required) the resource object (e.g WC_Order)
Return Return
(mixed)
Source Source
File: includes/legacy/api/v2/class-wc-api-resource.php
public function maybe_add_meta( $data, $resource ) { if ( isset( $this->server->params['GET']['filter']['meta'] ) && 'true' === $this->server->params['GET']['filter']['meta'] && is_object( $resource ) ) { // don't attempt to add meta more than once if ( preg_grep( '/[a-z]+_meta/', array_keys( $data ) ) ) { return $data; } // define the top-level property name for the meta switch ( get_class( $resource ) ) { case 'WC_Order': $meta_name = 'order_meta'; break; case 'WC_Coupon': $meta_name = 'coupon_meta'; break; case 'WP_User': $meta_name = 'customer_meta'; break; default: $meta_name = 'product_meta'; break; } if ( is_a( $resource, 'WP_User' ) ) { // customer meta $meta = (array) get_user_meta( $resource->ID ); } else { // coupon/order/product meta $meta = (array) get_post_meta( $resource->get_id() ); } foreach ( $meta as $meta_key => $meta_value ) { // don't add hidden meta by default if ( ! is_protected_meta( $meta_key ) ) { $data[ $meta_name ][ $meta_key ] = maybe_unserialize( $meta_value[0] ); } } } return $data; }
Changelog Changelog
Version | Description |
---|---|
2.1 | Introduced. |