WordPress Version: 5.7
/**
* Determines if a meta field with the given key exists for the given object ID.
*
* @since 3.3.0
*
* @param string $meta_type Type of object metadata is for. Accepts 'post', 'comment', 'term', 'user',
* or any other object type with an associated meta table.
* @param int $object_id ID of the object metadata is for.
* @param string $meta_key Metadata key.
* @return bool Whether a meta field with the given key exists.
*/
function metadata_exists($meta_type, $object_id, $meta_key)
{
if (!$meta_type || !is_numeric($object_id)) {
return false;
}
$object_id = absint($object_id);
if (!$object_id) {
return false;
}
/** This filter is documented in wp-includes/meta.php */
$check = apply_filters("get_{$meta_type}_metadata", null, $object_id, $meta_key, true, $meta_type);
if (null !== $check) {
return (bool) $check;
}
$meta_cache = wp_cache_get($object_id, $meta_type . '_meta');
if (!$meta_cache) {
$meta_cache = update_meta_cache($meta_type, array($object_id));
$meta_cache = $meta_cache[$object_id];
}
if (isset($meta_cache[$meta_key])) {
return true;
}
return false;
}