get_registered_metadata()
云策文档标注
概述
get_registered_metadata() 函数用于检索指定对象的已注册元数据。它支持按对象类型和子类型筛选,可返回单个键值或所有注册键值数组。
关键要点
- 函数返回指定对象的已注册元数据,包括对象子类型和整个对象类型的注册数据。
- 参数包括 $object_type(必需,如 'post'、'user')、$object_id(必需)和 $meta_key(可选,指定时返回单个值)。
- 返回值:指定 $meta_key 时返回单个值或数组;未指定时返回所有注册键值数组;$meta_key 未注册时返回 false。
- 内部使用 get_registered_meta_keys() 和 get_metadata() 等函数,并检查 registered_meta_key_exists()。
代码示例
function get_registered_metadata( $object_type, $object_id, $meta_key = '' ) {
$object_subtype = get_object_subtype( $object_type, $object_id );
if ( ! empty( $meta_key ) ) {
if ( ! empty( $object_subtype ) && ! registered_meta_key_exists( $object_type, $meta_key, $object_subtype ) ) {
$object_subtype = '';
}
if ( ! registered_meta_key_exists( $object_type, $meta_key, $object_subtype ) ) {
return false;
}
$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 );
if ( ! $data ) {
return array();
}
$meta_keys = get_registered_meta_keys( $object_type );
if ( ! empty( $object_subtype ) ) {
$meta_keys = array_merge( $meta_keys, get_registered_meta_keys( $object_type, $object_subtype ) );
}
return array_intersect_key( $data, $meta_keys );
}注意事项
- 函数自 WordPress 4.6.0 版本引入,需确保环境兼容。
- 相关函数包括 get_object_subtype()、registered_meta_key_exists()、get_registered_meta_keys() 和 get_metadata()。
原文内容
Retrieves registered metadata for a specified object.
Description
The results include both meta that is registered specifically for the object’s subtype and meta that is registered for the entire object type.
Parameters
$object_typestringrequired-
Type of object metadata is for. Accepts
'blog','post','comment','term','user', or any other object type with an associated meta table. $object_idintrequired-
ID of the object the metadata is for.
$meta_keystringoptional-
Registered metadata key. If not specified, retrieve all registered metadata for the specified object.
Source
function get_registered_metadata( $object_type, $object_id, $meta_key = '' ) {
$object_subtype = get_object_subtype( $object_type, $object_id );
if ( ! empty( $meta_key ) ) {
if ( ! empty( $object_subtype ) && ! registered_meta_key_exists( $object_type, $meta_key, $object_subtype ) ) {
$object_subtype = '';
}
if ( ! registered_meta_key_exists( $object_type, $meta_key, $object_subtype ) ) {
return false;
}
$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 );
if ( ! $data ) {
return array();
}
$meta_keys = get_registered_meta_keys( $object_type );
if ( ! empty( $object_subtype ) ) {
$meta_keys = array_merge( $meta_keys, get_registered_meta_keys( $object_type, $object_subtype ) );
}
return array_intersect_key( $data, $meta_keys );
}
Changelog
| Version | Description |
|---|---|
| 4.6.0 | Introduced. |