Make WordPress Core


Ignore:
Timestamp:
06/25/2026 09:08:14 AM (4 months ago)
Author:
gziolo
Message:

Allow customization of the AI Client object cache group

Introduces the wp_ai_client_cache_group filter to allow developers to customize the object cache group used by WP_AI_Client_Cache.

Includes tests for using a custom cache group and casting non-string filter values to strings.

Props baikaresandeep007-1, apermo.
Fixes #65127.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/ai-client/adapters/class-wp-ai-client-cache.php

    r62255 r62557  
    3131
    3232        /**
     33         * Retrieves the cache group used for cache operations, applying a filter for customization.
     34         *
     35         * @since 7.1.0
     36         *
     37         * @return string Cache group name.
     38         */
     39        private function get_cache_group(): string {
     40                /**
     41                 * Filters the cache group used by the WP AI Client cache adapter.
     42                 *
     43                 * Allows integrators to change the object cache group under which AI client
     44                 * items are stored. This is useful for avoiding key collisions, creating
     45                 * environment-specific caches, or adapting to backend constraints.
     46                 *
     47                 * @since 7.1.0
     48                 *
     49                 * @param string $group The cache group.
     50                 */
     51                return (string) apply_filters( 'wp_ai_client_cache_group', self::CACHE_GROUP );
     52        }
     53
     54        /**
    3355         * Fetches a value from the cache.
    3456         *
    … …  
    4163        public function get( $key, $default_value = null ) {
    4264                $found = false;
    43                 $value = wp_cache_get( $key, self::CACHE_GROUP, false, $found );
     65                $value = wp_cache_get( $key, $this->get_cache_group(), false, $found );
    4466
    4567                if ( ! $found ) {
    … …  
    6385                $expire = $this->ttl_to_seconds( $ttl );
    6486
    65                 return wp_cache_set( $key, $value, self::CACHE_GROUP, $expire );
     87                return wp_cache_set( $key, $value, $this->get_cache_group(), $expire );
    6688        }
    6789
    … …  
    7597         */
    7698        public function delete( $key ): bool {
    77                 return wp_cache_delete( $key, self::CACHE_GROUP );
     99                return wp_cache_delete( $key, $this->get_cache_group() );
    78100        }
    79101
    … …  
    93115                }
    94116
    95                 return wp_cache_flush_group( self::CACHE_GROUP );
     117                return wp_cache_flush_group( $this->get_cache_group() );
    96118        }
    97119
    … …  
    112134                 */
    113135                $keys_array = $this->iterable_to_array( $keys );
    114                 $values     = wp_cache_get_multiple( $keys_array, self::CACHE_GROUP );
     136                $values     = wp_cache_get_multiple( $keys_array, $this->get_cache_group() );
    115137                $result     = array();
    116138
    … …  
    139161                $values_array = $this->iterable_to_array( $values );
    140162                $expire       = $this->ttl_to_seconds( $ttl );
    141                 $results      = wp_cache_set_multiple( $values_array, self::CACHE_GROUP, $expire );
     163                $results      = wp_cache_set_multiple( $values_array, $this->get_cache_group(), $expire );
    142164
    143165                // Return true only if all operations succeeded.
    … …  
    155177        public function deleteMultiple( $keys ): bool {
    156178                $keys_array = $this->iterable_to_array( $keys );
    157                 $results    = wp_cache_delete_multiple( $keys_array, self::CACHE_GROUP );
     179                $results    = wp_cache_delete_multiple( $keys_array, $this->get_cache_group() );
    158180
    159181                // Return true only if all operations succeeded.
    … …  
    171193        public function has( $key ): bool {
    172194                $found = false;
    173                 wp_cache_get( $key, self::CACHE_GROUP, false, $found );
     195                wp_cache_get( $key, $this->get_cache_group(), false, $found );
    174196
    175197                return (bool) $found;
Note: See TracChangeset for help on using the changeset viewer.