Title: get_metadata_by_mid
Published: April 25, 2014
Last modified: February 24, 2026

---

# get_metadata_by_mid( string $meta_type, int $meta_id ): stdClass|false

## In this article

 * [Parameters](https://developer.wordpress.org/reference/functions/get_metadata_by_mid/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/functions/get_metadata_by_mid/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/functions/get_metadata_by_mid/?output_format=md#source)
 * [Hooks](https://developer.wordpress.org/reference/functions/get_metadata_by_mid/?output_format=md#hooks)
 * [Related](https://developer.wordpress.org/reference/functions/get_metadata_by_mid/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/functions/get_metadata_by_mid/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/functions/get_metadata_by_mid/?output_format=md#wp--skip-link--target)

Retrieves metadata by meta ID.

## 󠀁[Parameters](https://developer.wordpress.org/reference/functions/get_metadata_by_mid/?output_format=md#parameters)󠁿

 `$meta_type`stringrequired

Type of object metadata is for. Accepts `'blog'`, `'post'`, `'comment'`, `'term'`,`'
user'`, or any other object type with an associated meta table.

`$meta_id`intrequired

ID for a specific meta row.

## 󠀁[Return](https://developer.wordpress.org/reference/functions/get_metadata_by_mid/?output_format=md#return)󠁿

 stdClass|false Metadata object, or boolean `false` if the metadata doesn’t exist.

 * `meta_key` string
 * The meta key.
 * `meta_value` mixed
 * The unserialized meta value.
 * `meta_id` string
 * Optional. The meta ID when the meta type is any value except `'user'`.
 * `umeta_id` string
 * Optional. The meta ID when the meta type is `'user'`.
 * `blog_id` string
 * Optional. The object ID when the meta type is `'blog'`.
 * `post_id` string
 * Optional. The object ID when the meta type is `'post'`.
 * `comment_id` string
 * Optional. The object ID when the meta type is `'comment'`.
 * `term_id` string
 * Optional. The object ID when the meta type is `'term'`.
 * `user_id` string
 * Optional. The object ID when the meta type is `'user'`.

## 󠀁[Source](https://developer.wordpress.org/reference/functions/get_metadata_by_mid/?output_format=md#source)󠁿

    ```php
    function get_metadata_by_mid( $meta_type, $meta_id ) {
    	global $wpdb;

    	if ( ! $meta_type || ! is_numeric( $meta_id ) || floor( $meta_id ) != $meta_id ) {
    		return false;
    	}

    	$meta_id = (int) $meta_id;
    	if ( $meta_id <= 0 ) {
    		return false;
    	}

    	$table = _get_meta_table( $meta_type );
    	if ( ! $table ) {
    		return false;
    	}

    	/**
    	 * Short-circuits the return value when fetching a meta field by meta ID.
    	 *
    	 * The dynamic portion of the hook name, `$meta_type`, refers to the meta object type
    	 * (blog, post, comment, term, user, or any other type with an associated meta table).
    	 * Returning a non-null value will effectively short-circuit the function.
    	 *
    	 * Possible hook names include:
    	 *
    	 *  - `get_blog_metadata_by_mid`
    	 *  - `get_post_metadata_by_mid`
    	 *  - `get_comment_metadata_by_mid`
    	 *  - `get_term_metadata_by_mid`
    	 *  - `get_user_metadata_by_mid`
    	 *
    	 * @since 5.0.0
    	 *
    	 * @param stdClass|null $value   The value to return.
    	 * @param int           $meta_id Meta ID.
    	 */
    	$check = apply_filters( "get_{$meta_type}_metadata_by_mid", null, $meta_id );
    	if ( null !== $check ) {
    		return $check;
    	}

    	$id_column = ( 'user' === $meta_type ) ? 'umeta_id' : 'meta_id';

    	$meta = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $table WHERE $id_column = %d", $meta_id ) );

    	if ( empty( $meta ) ) {
    		return false;
    	}

    	if ( isset( $meta->meta_value ) ) {
    		$meta->meta_value = maybe_unserialize( $meta->meta_value );
    	}

    	return $meta;
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/meta.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/6.9.4/src/wp-includes/meta.php#L821)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/meta.php#L821-L876)

## 󠀁[Hooks](https://developer.wordpress.org/reference/functions/get_metadata_by_mid/?output_format=md#hooks)󠁿

 [apply_filters( “get_{$meta_type}_metadata_by_mid”, stdClass|null $value, int $meta_id )](https://developer.wordpress.org/reference/hooks/get_meta_type_metadata_by_mid/)

Short-circuits the return value when fetching a meta field by meta ID.

## 󠀁[Related](https://developer.wordpress.org/reference/functions/get_metadata_by_mid/?output_format=md#related)󠁿

| Uses | Description | 
| [maybe_unserialize()](https://developer.wordpress.org/reference/functions/maybe_unserialize/)`wp-includes/functions.php` |

Unserializes data only if it was serialized.

  | 
| [wpdb::get_row()](https://developer.wordpress.org/reference/classes/wpdb/get_row/)`wp-includes/class-wpdb.php` |

Retrieves one row from the database.

  | 
| [_get_meta_table()](https://developer.wordpress.org/reference/functions/_get_meta_table/)`wp-includes/meta.php` |

Retrieves the name of the metadata table for the specified object type.

  | 
| [apply_filters()](https://developer.wordpress.org/reference/functions/apply_filters/)`wp-includes/plugin.php` |

Calls the callback functions that have been added to a filter hook.

  | 
| [wpdb::prepare()](https://developer.wordpress.org/reference/classes/wpdb/prepare/)`wp-includes/class-wpdb.php` |

Prepares a SQL query for safe execution.

  |

[Show 2 more](https://developer.wordpress.org/reference/functions/get_metadata_by_mid/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/functions/get_metadata_by_mid/?output_format=md#)

| Used by | Description | 
| [wp_xmlrpc_server::set_term_custom_fields()](https://developer.wordpress.org/reference/classes/wp_xmlrpc_server/set_term_custom_fields/)`wp-includes/class-wp-xmlrpc-server.php` |

Sets custom fields for a term.

  | 
| [get_post_meta_by_id()](https://developer.wordpress.org/reference/functions/get_post_meta_by_id/)`wp-admin/includes/post.php` |

Returns post meta data by meta ID.

  | 
| [wp_ajax_add_meta()](https://developer.wordpress.org/reference/functions/wp_ajax_add_meta/)`wp-admin/includes/ajax-actions.php` |

Handles adding meta via AJAX.

  | 
| [wp_ajax_delete_meta()](https://developer.wordpress.org/reference/functions/wp_ajax_delete_meta/)`wp-admin/includes/ajax-actions.php` |

Handles deleting meta via AJAX.

  | 
| [wp_xmlrpc_server::set_custom_fields()](https://developer.wordpress.org/reference/classes/wp_xmlrpc_server/set_custom_fields/)`wp-includes/class-wp-xmlrpc-server.php` |

Sets custom fields for post.

  | 
| [update_metadata_by_mid()](https://developer.wordpress.org/reference/functions/update_metadata_by_mid/)`wp-includes/meta.php` |

Updates metadata by meta ID.

  | 
| [delete_metadata_by_mid()](https://developer.wordpress.org/reference/functions/delete_metadata_by_mid/)`wp-includes/meta.php` |

Deletes metadata by meta ID.

  |

[Show 2 more](https://developer.wordpress.org/reference/functions/get_metadata_by_mid/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/functions/get_metadata_by_mid/?output_format=md#)

## 󠀁[Changelog](https://developer.wordpress.org/reference/functions/get_metadata_by_mid/?output_format=md#changelog)󠁿

| Version | Description | 
| [3.3.0](https://developer.wordpress.org/reference/since/3.3.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fget_metadata_by_mid%2F)
before being able to contribute a note or feedback.