register_rest_field() - WordPress 函数参考中文文档



发布于 2017-09-11 字数5289 浏览 904 评论 0

register_rest_field( string|array $object_type,  string $attribute,  array $args = array() )

Registers a new field on an existing WordPress object type.




Object(s) the field is being registered to, "post"|"term"|"comment" etc.


The attribute name.


An array of arguments used to handle the registered field.

  • ‘get_callback’
    (string|array|null) Optional. The callback function used to retrieve the field value. Default is ‘null’, the field will not be returned in the response.
  • ‘update_callback’
    (string|array|null) Optional. The callback function used to set and update the field value. Default is ‘null’, the value cannot be set or updated.
  • ‘schema’
    (string|array|null) Optional. The callback function used to create the schema for this field. Default is ‘null’, no schema entry will be returned.

Default value: array()


File: wp-includes/rest-api.php

function register_rest_field( $object_type, $attribute, $args = array() ) {
	$defaults = array(
		'get_callback'    => null,
		'update_callback' => null,
		'schema'          => null,

	$args = wp_parse_args( $args, $defaults );

	global $wp_rest_additional_fields;

	$object_types = (array) $object_type;

	foreach ( $object_types as $object_type ) {
		$wp_rest_additional_fields[ $object_type ][ $attribute ] = $args;


Version 描述
4.7.0 Introduced.



  • wp-includes/functions.php:

Used By

  • wp-includes/rest-api/fields/class-wp-rest-meta-fields.php:

User Contributed Notes

  1. Skip to note content

    You must log in to vote on the helpfulness of this noteVote results for this note: 1You must log in to vote on the helpfulness of this note

    Contributed by Nate Finch

    An example to add all of the post meta to a post-meta-fields field:

    add_action( 'rest_api_init', 'create_api_posts_meta_field' );
    function create_api_posts_meta_field() {
    	// register_rest_field ( 'name-of-post-type', 'name-of-field-to-return', array-of-callbacks-and-schema() )
    	register_rest_field( 'post', 'post-meta-fields', array(
    	       'get_callback'    => 'get_post_meta_for_api',
    	       'schema'          => null,
    function get_post_meta_for_api( $object ) {
    	//get the id of the post object array
    	$post_id = $object['id'];
    	//return the post meta
     	return get_post_meta( $post_id );

    This can be extended or edited. For example, if you don’t want to include all the post meta, you can filter it, or return only the field you need. The options are limitless, but the callback gives you access to the post object, which exposes the id among other parameters, so you can use many different helper functions.

    // assume there custom post_type named events 
    add_action( 'rest_api_init', function() {
        register_rest_field( 'events', 'event_date', array(
            'get_callback' => function( $comment_arr ) {
                $comment_obj = get_field('event_date', $comment_arr['id'] );
                return $comment_obj;
            'update_callback' => function( $karma, $comment_obj ) {
                update_field('event_date', $karma, $comment_arr['id'] );
                return true;
            'schema' => array(
                'event_date' => __( 'event_date' ),
                'type'        => 'text'

    GET callbacks accept up to 4 arguments in order…

    • $post – (object) Post or custom post type object of the request.
    • $attr – (string) Rest field/attr string identifier from the second parameter of your register_rest_field() declaration.
    • $request – (object) Full request payload – as a WP_REST_Request object
    • $object_type – (string) The object type which the field is registered against. Typically first parameter of your register_rest_field() declaration.

    Post callbacks accept the above arguments but also a 5th argument in the first position which is the value being passed from the POST request to the attribute/field.


需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。