寄存器_元数据(一串 $对象类型,一串 $元键,阵列 $个参数,字符串|数组 $已弃用 = 无效的 ):布尔

注册元密钥。

说明

建议为对象类型和对象子类型的特定组合注册元键。如果省略传递对象子类型,则将为整个对象类型注册元键,但如果同一对象类型和子类型存在同名的更具体的元键,则可以部分覆盖该元键。

如果对象类型不支持任何子类型,例如用户或注释,则通常应调用此函数而不传递子类型。

参数

$对象类型一串必修的
对象元数据的类型为。接受'发布','注释',“术语”,“用户”,或具有关联元表的任何其他对象类型。
$元键一串必修的
要注册的元键。
$个参数阵列必修的
注册时用于描述元密钥的数据。
  • 对象_子类型 一串
    A亚型;例如,如果对象类型为“post”,则为post类型。如果保留为空,则元密钥将在整个对象类型上注册。默认为空。
  • 类型 一串
    与此元键关联的数据类型。
    有效值为'字符串',“布尔值”,'整数',“数字”,“数组”、和'对象'.
  • 描述 一串
    附加到此元键的数据的描述。
  • 单一的 布尔
    元键是每个对象有一个值,还是每个对象有值数组。
  • 违约 混合的
    从返回的默认值获取元数据()如果尚未设置值。
    使用非单一元键时,默认值为第一个条目。
    换句话说,在打电话时获取元数据()具有单个$设置为,此处给定的默认值将封装在数组中。
  • 清理回调 可调用的
    清理时要调用的函数或方法$元键数据。
  • 授权回调 可调用的
    可选。执行edit_post_meta、add_post_meta和delete_post_meta功能检查时要调用的函数或方法。
  • 显示_重置 bool|数组
    与此元密钥相关联的数据是否可以被视为公共数据,并且应该通过RESTAPI进行访问。自定义帖子类型还必须声明支持通过REST访问已注册元数据的自定义字段。
    当注册复杂的元值时,此参数可以是一个数组'架构''准备回调'键而不是布尔值。
  • 修订_启用 布尔
    是否为此meta_key启用修订支持。仅当对象类型为“发布”.
$已弃用一串|阵列可选择的
已弃用。使用$个参数而不是。

违约:无效的

返回

布尔如果元密钥已在全局数组中成功注册,则为True,否则为false。
使用不同的清理和身份验证回调注册元键将触发这些回调,但不会添加到全局注册表中。

来源

函数register_meta($object_type,$meta_key,$args,$deprecated=null){全局$wp_meta_keys;if(!is_array($wp_meta_keys)){$wp_meta_keys=数组();}$defaults=数组(“object_subtype”=>“”,“type”=>“string”,“描述”=>“”,“默认”=>“”,“single”=>错误,“sanitize_callback”=>空,“auth_callback”=>空,“show_in_rest”=>假,“revisions_enabled”=>错误,);//过去有单独的参数用于清理和授权回调。$has_old_sanitize_cb=假;$has_old_auth_cb=假;if(is_callable($args)){$args=阵列(“sanitize_callback”=>$args,);$has_old_sanitize_cb=真;}其他{$args=(阵列)$args;}if(is_callable($已弃用)){$args['auth_callback']=不推荐使用$;$has_old_auth_cb=真;}/***在注册元数据时筛选注册参数。**@自4.6.0起**@param array$args元注册参数的数组。*@param array$defaults默认参数的数组。*@param string$object_type对象元数据的类型适用于。接受“帖子”、“评论”、“术语”、“用户”、,*或具有关联元表的任何其他对象类型。*@param string$meta_key元键。*/$args=应用过滤器('register_meta_args',$args,$defaults,$object_type,$meta_key);未设置($defaults['default']);$args=wp_parse_args($args,$defaults);//注册数组元时需要项架构。if(false!==$args['show_in_rest']&&'array'===$args['type']){if(!is_array($args['show_in_rest'])||!isset($args['show_in_rest']['schema']['项']){_doing_it_wrong(__FUNCTION__,__('注册“数组”元类型以显示在REST API中时,必须在“show_in_REST.schema.items”.'),'5.3.0'中指定每个数组项的模式);返回false;}}$object_subtype=!空($args['object_subtype'])$args['object_subtype']:'';if($args['revisions_enabled']){if('post'!==$object_type){_doing_it_wrong(__FUNCTION__,__('元键无法启用修订支持,除非对象类型支持修订。'),'6.4.0');返回false;}elseif(!空($object_subtype)&&!post_type_supports($object_subtype,“修订”){_doing_it_wrong(__FUNCTION__,__('元键无法启用修订支持,除非对象子类型支持修订。'),'6.4.0');返回false;}}//如果未提供“auth_callback”,请回退到“is_protected_meta()”。if(空($args['auth_callback']){if(is_protected_meta($meta_key,$object_type)){$args['auth_callback']='__return_false';}其他{$args['auth_callback']='__return_true';}}//Back-compat:旧的清理和身份验证回调应用于所有对象类型。if(is_callable($args['sanitize_callback']){if(!空($object_subtype)){添加过滤器(“清理{$object_type}_meta_{$meta_key}_for_{$obobject_subtype}”,$args['sanitize_callback'],10,4);}其他{add_filter(“清理{$object_type}_meta{$meta_key}”,$args['sanitize_callback'],10,3);}}if(is_callable($args['auth_callback'])){if(!空($object_subtype)){添加过滤器(“身份验证{$object_type}_meta_{$meta_key}_for_{$obobject_subtype}”,$args['auth_callback'],10,6);}其他{添加过滤器(“auth_{$object_type}_meta_{$meta_key}”,$args['auth_callback'],10,6);}}if(array_key_exists('default',$args)){$schema=$args;if(is_array($args['show_in_rest'])&&isset($args['show _in_lest']['schema'])){$schema=数组合并($schema,$args['show_in_rest']['schema']);}$check=rest_validate_value_from_schema($args['default'],$schema);if(iswp_error($check)){_doing_it_wrong(__FUNCTION__,__('注册默认元数据时,数据必须与提供的类型匹配。'),'5.5.0');返回false;}if(!has_filter(“默认{$object_type}_metadata”,'filter_default_metadata')){add_filter(“default_{$object_type}_metadata”,“filter_default_metadata”,10,5);}}//全局注册表仅包含使用4.6.0中添加的参数数组注册的元键。if(!$has_old_auth_cb&&!$has _old_sanitize_cb){unset($args['object_subtype']);$wp_meta_keys[$对象类型][$对象子类型][$meta_key]=$args;返回true;}返回false;}

挂钩

应用筛选器('注册表_元数据_参数',阵列 $个参数,阵列 $默认值,一串 $对象类型,一串 $元键 )

在注册元数据时筛选注册参数。

变更日志

版本说明
6.4.0这个$revisions_启用参数已添加到arguments数组。
5.5.0这个$默认值参数已添加到arguments数组。
5.3.0有效的元类型扩展为包括“array”和“object”。
4.9.8这个$对象_子类型参数已添加到arguments数组。
4.6.0修改为支持要附加到已注册元密钥的数据数组。以前的参数$sanitize_callback$auth_callback已折叠到此阵列中。
3.3.0介绍。
再显示1个显示更少

用户贡献的笔记

  1. 跳到注释11内容

    从WordPress 4.9.8开始,您可以使用对象_子类型参数指定自定义帖子类型。以前你只能注册所有帖子类型。例如,注册元密钥我的元数据仅适用于我的文章(_A)自定义帖子类型:

    register_meta('日志','我的元数据'[“object_subtype”=>“my_article”,“show_in_rest”=>真]);

    或者你可以使用新的注册表_成本_元数据功能。

  2. 跳到注释12内容

    对于要在REST API中为自定义帖子类型返回的自定义元字段,《REST API手册》指出,帖子类型必须支持自定义字段以便显示注册的元字段。

    从手册中:

    请注意,对于在自定义帖子类型上注册的元字段,帖子类型必须支持自定义字段。否则,元字段将不会出现在REST API中

    资料来源:https://developer.wordpress.org/rest-api/extending-the-rest-api/modifying-responses/#read-后meta-field-in-post-responses

  3. 跳到注释13内容

    从WordPress 4.7开始,您可以使用以下功能。这将在未来版本中进行扩展。

    $object_type=“发布”;//对象类型。//对于自定义帖子类型,这是“帖子”;对于自定义注释类型,这就是“注释”。$args1=阵列(“type”=>“string”,//将元值作为字符串进行验证和清理。//默认值:“string”。//在4.7中,“string”、“boolean”、“integer”、“number”中的一个必须用作“type”。“description”=>“与字符串元值关联的元键。”,//显示在元键的架构中。“single”=>true,//返回该类型的单个值。默认值:false。“show_in_rest”=>true,//在WP rest API响应中显示。默认值:false。);寄存器元数据($object_type,'my_postmeta_key',$args1);$args2=阵列(“type”=>“string”,//将元值作为字符串进行验证和清理。“description”=>“与字符串元值关联的元键。”,//显示在元键的架构中。“single”=>false,//返回一个数组,该数组的类型用作项类型。默认值:false。“show_in_rest”=>true,//在WP rest API响应中显示。默认值:false。);register_meta(“用户”,“my_usermeta_key”,$args2);

    这将在响应中返回元对象中的元键和元值。例如,id=8的单个post响应和上面注册的元键“my_postmeta_key”:

    {“id”:8,//帖子id...“元”:{“my_postmeta_key”:“元值”},...}
  4. 跳到注释14内容

    在WordPress 5.5之前,REST API可以使用自定义元字段的默认值只能这样实现:

    (考虑为某些用户输入注册一个自定义复选框字段,例如,帖子类型的标题切换)

    寄存器_元数据(“发布”,“自定义密钥”,阵列(“single”=>真,“type”=>“boolean”,//或任何有效的数据类型“show_in_rest”=>数组(“schema”=>数组(“type”=>“boolean”,//应匹配预期的数据类型“default”=>true,),),));

    使用WordPress 5.5,可以通过附加参数完成违约,如下所示:

    寄存器_元数据(“发布”,“自定义密钥”,阵列(“single”=>真,“type”=>“boolean”,“default”=>true,//这才是真正的诀窍,而不是提供REST模式“show_in_rest”=>真,));

    值得注意的是,这在扩展块编辑器侧栏以通过提供自定义字段时非常有用自定义元框。否则,在块编辑器中为自定义字段设置默认值并不简单。

  5. 跳到注释15内容

    授权回调清理回调可使用参数调用。

    身份验证回调应用于map_meta_cap()(wp包含/能力.php).
    Sanitize回调应用于消毒meta()(wp-includes/meta.php).

    $status=寄存器_元数据('post','_candidate_title',数组(“type”=>“string”,“description”=>“事件位置”,“object_subtype”=>“恢复”,“single”=>真,“show_in_rest”=>数组(“schema”=>数组(“type”=>“string”,“默认”=>true)),“auth_callback”=>函数($allowed、$meta_key、$object_id、$user_id、$cap、$caps){返回current_user_can('edit_resume',$object_id);},“sanitize_callback”=>函数($meta_value、$meta_ckey、$object_type、$obobject_subtype){返回$meta_value;}) );
  6. 跳到注释17内容

    在WP堆芯中`寄存器_元数据()`仅由“register_post_meta”使用,并且`register_term_meta()寄存器`,否则这些功能都不会在Core中使用。

    Jetpack使用`寄存器post_meta()`、和`寄存器_元数据()`用于“帖子”和“用户”。因此,Jetpack有代码示例要检查其使用情况。

你必须登录在能够发表注释或反馈之前。