Using WordPress ‘register_meta()’ PHP function

The register_meta() WordPress PHP function registers a meta key for a specific combination of object type and object subtype.

Usage

register_meta( $object_type, $meta_key, $args );

Example:

register_meta( 'post', 'featured_color', array(
    'type' => 'string',
    'single' => true,
    'sanitize_callback' => 'sanitize_text_field',
    'auth_callback' => '__return_true'
));

Parameters

  • $object_type (string) – Required. Type of object metadata is for. Accepts ‘post’, ‘comment’, ‘term’, ‘user’, or any other object type with an associated meta table.
  • $meta_key (string) – Required. Meta key to register.
  • $args (array) – Required. Data used to describe the meta key when registered. Includes:
    • object_subtype (string) – A subtype; e.g., if the object type is “post”, the post type. If left empty, the meta key will be registered on the entire object type. Default empty.
    • type (string) – The type of data associated with this meta key. Valid values are ‘string’, ‘boolean’, ‘integer’, ‘number’, ‘array’, and ‘object’.
    • single (bool) – Whether the meta key has one value per object or an array of values per object.
    • sanitize_callback (callable) – A function or method to call when sanitizing $meta_key data.
    • auth_callback (callable) – Optional. A function or method to call when performing edit_post_meta, add_post_meta, and delete_post_meta capability checks.
    • show_in_rest (bool|array) – Whether data associated with this meta key can be considered public and should be accessible via the REST API.

More information

See WordPress Developer Resources: register_meta()

Examples

Registering a simple string meta key for posts

This example registers a meta key called ‘featured_color’ for posts. The value is a single string sanitized using the sanitize_text_field function.

function my_register_post_meta() {
    register_meta( 'post', 'featured_color', array(
        'type' => 'string',
        'single' => true,
        'sanitize_callback' => 'sanitize_text_field',
        'auth_callback' => '__return_true'
    ));
}
add_action( 'init', 'my_register_post_meta' );

Registering a boolean meta key for users

This example registers a meta key called ‘is_premium’ for users, which is a boolean value.

function my_register_user_meta() {
    register_meta( 'user', 'is_premium', array(
        'type' => 'boolean',
        'single' => true,
        'sanitize_callback' => 'rest_sanitize_boolean',
        'auth_callback' => '__return_true'
    ));
}
add_action( 'init', 'my_register_user_meta' );

Registering an integer meta key for comments

This example registers a meta key called ‘rating’ for comments, which is an integer value.

function my_register_comment_meta() {
    register_meta( 'comment', 'rating', array(
        'type' => 'integer',
        'single' => true,
        'sanitize_callback' => 'absint',
        'auth_callback' => '__return_true'
    ));
}
add_action( 'init', 'my_register_comment_meta' );