Last active
July 17, 2023 11:53
-
-
Save wokamoto/5828908 to your computer and use it in GitHub Desktop.
[WordPress] user_meta transient
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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