1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10:
11: function xu_cache_delete( $key, $group = '' ) {
12:
13: if ( empty( $key ) ) {
14: return false;
15: }
16:
17: if ( is_array( $key ) || is_object( $key ) ) {
18: $key = md5( serialize( $key ) );
19: }
20:
21: if ( ! is_string( $key ) ) {
22: return false;
23: }
24:
25: return wp_cache_delete( $key, $group );
26: }
27:
28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
38: function xu_cache_delete_group( $group, $suffix = '' ) {
39: if ( ! function_exists( 'wp_cache_delete_group' ) ) {
40: return false;
41: }
42:
43: return wp_cache_delete_group( xu_cache_key( $group, $suffix ) );
44: }
45:
46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56:
57: function xu_cache_get( $key, $fn = '', $args = [], $group = '' ) {
58: if ( ! empty( $fn ) && ! empty( $args ) && empty( $group ) ) {
59: if ( is_string( $args ) ) {
60: $group = $args;
61: }
62:
63: $args = $fn;
64: $fn = $key;
65: $key = $args;
66: }
67:
68: if ( is_array( $key ) && count( $key ) === 1 ) {
69: $key = $key[0];
70: }
71:
72: if ( is_array( $key ) || is_object( $key ) ) {
73: $key = md5( serialize( $key ) );
74: }
75:
76: if ( $value = wp_cache_get( $key, $group ) ) {
77: return $value;
78: }
79:
80: if ( ! is_callable( $fn ) ) {
81: return false;
82: }
83:
84: $value = call_user_func_array( $fn, $args );
85:
86: if ( empty( $value ) ) {
87: return $value;
88: }
89:
90: wp_cache_set( $key, $value, $group );
91:
92: return $value;
93: }
94:
95: 96: 97: 98: 99: 100: 101: 102:
103: function xu_cache_key( $key, $suffix = '' ) {
104: if ( ! is_string( $key ) ) {
105: return;
106: }
107:
108: $key = sanitize_title_with_dashes( $key );
109: $key = str_replace( '-', '_', $key );
110:
111: if ( is_array( $suffix )||is_object( $suffix ) ) {
112: $suffix = md5( serialize( $suffix ) );
113: }
114:
115: if ( $suffix === false ) {
116: $suffix = '0';
117: }
118:
119: if ( $suffix === '' || $suffix === null ) {
120: return $key;
121: }
122:
123: return sprintf( '%s:%s', $key, $suffix );
124: }
125: