get_post_meta () - это оболочка для get_metadata (), а get_metadata () использует глобальный объект WP_Object_Cache.
Соответствующий код:
function get_metadata( $meta_type, $object_id, $meta_key = '', $single = false ) {
...
$meta_cache = wp_cache_get( $object_id, $meta_type . '_meta' );
if ( ! $meta_cache ) {
$meta_cache = update_meta_cache( $meta_type, array( $object_id ) );
if ( isset( $meta_cache[ $object_id ] ) ) {
$meta_cache = $meta_cache[ $object_id ];
} else {
$meta_cache = null;
}
}
...
}
где wp_cache_get () проверяет глобальный объект WP_Object_Cache $ wp_object_cache и update_meta_cache () обновляют глобальный объект WP_Object_Cache $ wp_object_cache, если данные не находятся в кеше. Конечно, для этого обновления требуется запрос SQL.
Между прочим, глобальный объект WP_Object_Cache $ wp_object_cache используется гораздо больше, чем метаданные публикации - это общий c кеш, и WordPress и плагины используют его для кэширование дорогостоящих значений.