Делает ли get_post_meta () отдельный запрос к базе данных? - PullRequest
1 голос
/ 07 мая 2020

Мой вопрос, который мне приходилось задавать давно: go .. Мне любопытно, делают ли эти функции wordpress, такие как get_post_meta, запрос sql к базе данных или он загружается в глобальную переменную WP_Query, когда страница загружается? Спасибо

1 Ответ

0 голосов
/ 07 мая 2020

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 и плагины используют его для кэширование дорогостоящих значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...