Skip to content

Instantly share code, notes, and snippets.

@wokamoto
Last active July 17, 2023 11:53
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wokamoto/5828908 to your computer and use it in GitHub Desktop.
Save wokamoto/5828908 to your computer and use it in GitHub Desktop.
[WordPress] user_meta transient
<?php
/**
* Delete a user meta transient.
*/
function delete_user_meta_transient( $user_id, $transient ) {
global $_wp_using_ext_object_cache;
$user_id = (int) $user_id;
do_action( 'delete_user_meta_transient_' . $transient, $user_id, $transient );
if ( $_wp_using_ext_object_cache ) {
$result = wp_cache_delete( "{$transient}-{$user_id}", "user_meta_transient-{$user_id}" );
} else {
$meta_timeout = '_transient_timeout_' . $transient;
$meta = '_transient_' . $transient;
$result = delete_user_meta( $user_id, $meta );
if ( $result )
delete_user_meta( $user_id, $meta_timeout );
}
if ( $result )
do_action( 'deleted_user_meta_transient', $transient, $user_id, $transient );
return $result;
}
/**
* Get the value of a user meta transient.
*/
function get_user_meta_transient( $user_id, $transient ) {
global $_wp_using_ext_object_cache;
$user_id = (int) $user_id;
if (has_filter('pre_user_meta_transient_' . $transient)) {
$pre = apply_filters( 'pre_user_meta_transient_' . $transient, $user_id, $transient );
if ( false !== $pre )
return $pre;
}
if ( $_wp_using_ext_object_cache ) {
$value = wp_cache_get( "{$transient}-{$user_id}", "user_meta_transient-{$user_id}" );
} else {
$meta_timeout = '_transient_timeout_' . $transient;
$meta = '_transient_' . $transient;
$value = get_user_meta( $user_id, $meta, true );
if ( $value && ! defined( 'WP_INSTALLING' ) ) {
if ( get_user_meta( $user_id, $meta_timeout, true ) < time() ) {
delete_user_meta_transient( $user_id, $transient );
return false;
}
}
}
return
has_filter('user_meta_transient_' . $transient)
? apply_filters('user_meta_transient_' . $transient, $value, $user_id)
: $value;
}
/**
* Set/update the value of a user meta transient.
*/
function set_user_meta_transient( $user_id, $transient, $value, $expiration = 0 ) {
global $_wp_using_ext_object_cache;
$user_id = (int) $user_id;
delete_user_meta_transient( $user_id, $transient );
if (has_filter('pre_set_user_meta_transient_' . $transient)) {
$value = apply_filters( 'pre_set_user_meta_transient_' . $transient, $value, $user_id, $transient );
}
if ( $_wp_using_ext_object_cache ) {
$result = wp_cache_set( "{$transient}-{$user_id}", $value, "user_meta_transient-{$user_id}", $expiration );
} else {
$meta_timeout = '_transient_timeout_' . $transient;
$meta = '_transient_' . $transient;
if ( $expiration ) {
update_user_meta( $user_id, $meta_timeout, time() + $expiration );
}
$result = update_user_meta( $user_id, $meta, $value );
}
if ( $result ) {
do_action( 'set_user_meta_transient_' . $transient, $user_id, $transient );
do_action( 'setted_user_meta_transient', $transient, $user_id, $transient );
}
return $result;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment