diff --git a/includes/abstracts/abstract-wc-data.php b/includes/abstracts/abstract-wc-data.php index 8303f9d0170..486ef68f794 100644 --- a/includes/abstracts/abstract-wc-data.php +++ b/includes/abstracts/abstract-wc-data.php @@ -252,19 +252,18 @@ abstract class WC_Data { * @return bool */ protected function filter_null_meta( $meta ) { - $meta = (array) $meta; - return ! is_null( $meta['value'] ); + return ! is_null( $meta->value ); } /** * Get All Meta Data. * * @since 2.6.0 - * @return array + * @return array of objects. */ public function get_meta_data() { $this->maybe_read_meta_data(); - return array_filter( wc_list_pluck( $this->meta_data, 'get_data' ), array( $this, 'filter_null_meta' ) ); + return array_filter( $this->meta_data, array( $this, 'filter_null_meta' ) ); } /** diff --git a/includes/class-wc-meta-data.php b/includes/class-wc-meta-data.php index fd8e10b3b08..84945319d98 100644 --- a/includes/class-wc-meta-data.php +++ b/includes/class-wc-meta-data.php @@ -18,7 +18,7 @@ if ( ! defined( 'ABSPATH' ) ) { /** * WC_Meta_Data class. */ -class WC_Meta_Data { +class WC_Meta_Data implements JsonSerializable { /** * Current data for metadata @@ -46,6 +46,15 @@ class WC_Meta_Data { $this->apply_changes(); } + /** + * When converted to JSON. + * + * @return object + */ + public function jsonSerialize() { + return $this->get_data(); + } + /** * Merge changes with data and clear. */