From 8a6cc1a810d26e2dd2375592ec74d4cc32f811f9 Mon Sep 17 00:00:00 2001 From: whyisjake Date: Tue, 16 Jun 2020 06:30:09 +0000 Subject: [PATCH] Cache API: Add `wp_cache_get_multiple()` to core functions. * `update_object_term_cache` * `update_meta_cache` * `_get_non_cached_ids` See [47938]. Fixes #50352. Props spacedmonkey, tillkruss, lukecavanagh. Built from https://develop.svn.wordpress.org/trunk@48055 git-svn-id: http://core.svn.wordpress.org/trunk@47822 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/functions.php | 7 ++++--- wp-includes/meta.php | 10 +++++----- wp-includes/taxonomy.php | 9 +++++---- wp-includes/version.php | 2 +- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/wp-includes/functions.php b/wp-includes/functions.php index 46a9db42bf..2edb6a6a11 100644 --- a/wp-includes/functions.php +++ b/wp-includes/functions.php @@ -6359,10 +6359,11 @@ function wp_debug_backtrace_summary( $ignore_class = null, $skip_frames = 0, $pr * @return int[] Array of IDs not present in the cache. */ function _get_non_cached_ids( $object_ids, $cache_key ) { - $clean = array(); - foreach ( $object_ids as $id ) { + $clean = array(); + $cache_values = wp_cache_get_multiple( $object_ids, $cache_key ); + foreach ( $cache_values as $id => $cache_value ) { $id = (int) $id; - if ( ! wp_cache_get( $id, $cache_key ) ) { + if ( ! $cache_value ) { $clean[] = $id; } } diff --git a/wp-includes/meta.php b/wp-includes/meta.php index de00456c78..c34e724db2 100644 --- a/wp-includes/meta.php +++ b/wp-includes/meta.php @@ -926,11 +926,11 @@ function update_meta_cache( $meta_type, $object_ids ) { return (bool) $check; } - $cache_key = $meta_type . '_meta'; - $ids = array(); - $cache = array(); - foreach ( $object_ids as $id ) { - $cached_object = wp_cache_get( $id, $cache_key ); + $cache_key = $meta_type . '_meta'; + $ids = array(); + $cache = array(); + $cache_values = wp_cache_get_multiple( $object_ids, $cache_key ); + foreach ( $cache_values as $id => $cached_object ) { if ( false === $cached_object ) { $ids[] = $id; } else { diff --git a/wp-includes/taxonomy.php b/wp-includes/taxonomy.php index c8f2d4efa1..b8bbc5048b 100644 --- a/wp-includes/taxonomy.php +++ b/wp-includes/taxonomy.php @@ -3410,10 +3410,11 @@ function update_object_term_cache( $object_ids, $object_type ) { $taxonomies = get_object_taxonomies( $object_type ); $ids = array(); - foreach ( (array) $object_ids as $id ) { - foreach ( $taxonomies as $taxonomy ) { - if ( false === wp_cache_get( $id, "{$taxonomy}_relationships" ) ) { - $ids[] = $id; + foreach ( $taxonomies as $taxonomy ) { + $cache_values = wp_cache_get_multiple( (array) $object_ids, "{$taxonomy}_relationships" ); + foreach ( $cache_values as $key => $value ) { + if ( false === $value ) { + $ids[] = $key; break; } } diff --git a/wp-includes/version.php b/wp-includes/version.php index 62fced9197..cd95780d18 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -13,7 +13,7 @@ * * @global string $wp_version */ -$wp_version = '5.5-alpha-48054'; +$wp_version = '5.5-alpha-48055'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.