/** * Retrieves registered metadata for a specified object. * * @since 4.6.0 * * @param string $object_type Type of object to request metadata for. (e.g. comment, post, term, user) * @param string $object_subtype The subtype of the object's type to request metadata for. (e.g. custom post type) * @param int $object_id ID of the object the metadata is for. * @param string $meta_key Optional. Registered metadata key. If not specified, retrieve all registered * metadata for the specified object. * * @return mixed|WP_Error */ function get_registered_metadata($object_type, $object_subtype, $object_id, $meta_key = '') { global $wp_meta_keys; if (!is_array($wp_meta_keys)) { return new WP_Error('invalid_meta_key', __('Invalid meta key. Not registered.')); } if (!wp_object_type_exists($object_type)) { return new WP_Error('invalid_meta_key', __('Invalid meta key. Not a core object type.')); } if (!empty($meta_key)) { if (!registered_meta_key_exists($object_type, $object_subtype, $meta_key)) { return new WP_Error('invalid_meta_key', __('Invalid meta key. Not registered.')); } $meta_keys = get_registered_meta_keys($object_type, $object_subtype); $meta_key_data = $meta_keys[$meta_key]; $data = get_metadata($object_type, $object_id, $meta_key, $meta_key_data['single']); return $data; } $data = get_metadata($object_type, $object_id); $meta_keys = get_registered_meta_keys($object_type, $object_subtype); $registered_data = array(); // Someday, array_filter() foreach ($meta_keys as $k => $v) { if (isset($data[$k])) { $registered_data[$k] = $data[$k]; } } return $registered_data; }
/** * Retrieves registered metadata for a specified object. * * @since 4.6.0 * * @param string $object_type Type of object to request metadata for. (e.g. comment, post, term, user) * @param int $object_id ID of the object the metadata is for. * @param string $meta_key Optional. Registered metadata key. If not specified, retrieve all registered * metadata for the specified object. * @return mixed A single value or array of values for a key if specified. An array of all registered keys * and values for an object ID if not. */ function get_registered_metadata($object_type, $object_id, $meta_key = '') { if (!empty($meta_key)) { if (!registered_meta_key_exists($object_type, $meta_key)) { return false; } $meta_keys = get_registered_meta_keys($object_type); $meta_key_data = $meta_keys[$meta_key]; $data = get_metadata($object_type, $object_id, $meta_key, $meta_key_data['single']); return $data; } $data = get_metadata($object_type, $object_id); $meta_keys = get_registered_meta_keys($object_type); $registered_data = array(); // Someday, array_filter() foreach ($meta_keys as $k => $v) { if (isset($data[$k])) { $registered_data[$k] = $data[$k]; } } return $registered_data; }