Title: transients
Last modified: July 12, 2018

---

# transients

 *  [Gabor](https://wordpress.org/support/users/nextendweb_gabor/)
 * (@nextendweb_gabor)
 * [7 years, 10 months ago](https://wordpress.org/support/topic/transients-4/)
 * Hi! I’m Gabor from Nextendweb and we are the developers of Nextend Social Login
   and Register plugin. We had a conflict with your code, that in this file:
    wp-
   content/plugins/age-gate/public/class-age-gate-public.php you are deleting all
   transients from the website: `$this->_purge_transients();` and this includes 
   ours too. We haven’t got deep enough into the code to see which transients should
   be deleted, but could you please create a fix for this issue to only affect targeted
   codes?

Viewing 5 replies - 1 through 5 (of 5 total)

 *  Plugin Author [Phil](https://wordpress.org/support/users/philsbury/)
 * (@philsbury)
 * [7 years, 10 months ago](https://wordpress.org/support/topic/transients-4/#post-10488159)
 * Hi Gabor,
 * That’s interesting as the purge method I use should firstly only be looking for
   any age gate related transients, and secondly only remove a transient if it’s
   expired.
 * I’ll of course double check it (I actually want to move it to be in admin) but
   I’ve not seen it remove others I’ve set that is shouldn’t.
 * Are there any specific names I should look out for from your plugin and is it
   happening in both you free and pro versions?
 * Thanks
    Phil
 *  Plugin Author [Phil](https://wordpress.org/support/users/philsbury/)
 * (@philsbury)
 * [7 years, 10 months ago](https://wordpress.org/support/topic/transients-4/#post-10488664)
 * Hi again Gabor,
 * I’ve done some investigation into this and Age Gate will not be removing transients
   that don’t belong to it in terms of naming convention so unless you have a transient
   in the format of *_age_gate_* the Age Gate shouldn’t touch it.
 * If you can give an example of this happening please do let me know.
 * Thanks,
    Phil
 *  [Nextendweb](https://wordpress.org/support/users/nextendweb/)
 * (@nextendweb)
 * [7 years, 10 months ago](https://wordpress.org/support/topic/transients-4/#post-10489934)
 * Hi [@philsbury](https://wordpress.org/support/users/philsbury/),
    we are trying
   to reproduce the issue on our side, but no luck. I happened only in the website
   of one of our user. Currently I do not have access to their site to check things.
 * When we deactivated Age Gate plugin, Nextend Social Login worked fine.
    When 
   Age Gate was activated, I debugged Nextend Social Login and it turned out that
   the transient was missing. When I commented out `$this->_purge_transients();`,
   transients worked again.
 * I think the best if we wait the feedback from the user.
    —————————————————— BTW:
   Why do you need to purge your transients? WordPress will do for yourself. Also
   you have only two transients with expiration. I think it is unnecessary to search
   and delete the few transients on every page load.
 * [Transient usage in Age Gate](https://i.imgur.com/L5gL4xm.png)
 * WordPress deletes the expired transients daily:
    `wp_schedule_event( time(), '
   daily', 'delete_expired_transients' );`
 *     ```
       function delete_expired_transients( $force_db = false ) {
       	global $wpdb;
   
       	if ( ! $force_db && wp_using_ext_object_cache() ) {
       		return;
       	}
   
       	$wpdb->query( $wpdb->prepare(
       		"DELETE a, b FROM {$wpdb->options} a, {$wpdb->options} b
       			WHERE a.option_name LIKE %s
       			AND a.option_name NOT LIKE %s
       			AND b.option_name = CONCAT( '_transient_timeout_', SUBSTRING( a.option_name, 12 ) )
       			AND b.option_value < %d",
       		$wpdb->esc_like( '_transient_' ) . '%',
       		$wpdb->esc_like( '_transient_timeout_' ) . '%',
       		time()
       	) );
   
       	if ( ! is_multisite() ) {
       		// non-Multisite stores site transients in the options table.
       		$wpdb->query( $wpdb->prepare(
       			"DELETE a, b FROM {$wpdb->options} a, {$wpdb->options} b
       				WHERE a.option_name LIKE %s
       				AND a.option_name NOT LIKE %s
       				AND b.option_name = CONCAT( '_site_transient_timeout_', SUBSTRING( a.option_name, 17 ) )
       				AND b.option_value < %d",
       			$wpdb->esc_like( '_site_transient_' ) . '%',
       			$wpdb->esc_like( '_site_transient_timeout_' ) . '%',
       			time()
       		) );
       	} elseif ( is_multisite() && is_main_site() && is_main_network() ) {
       		// Multisite stores site transients in the sitemeta table.
       		$wpdb->query( $wpdb->prepare(
       			"DELETE a, b FROM {$wpdb->sitemeta} a, {$wpdb->sitemeta} b
       				WHERE a.meta_key LIKE %s
       				AND a.meta_key NOT LIKE %s
       				AND b.meta_key = CONCAT( '_site_transient_timeout_', SUBSTRING( a.meta_key, 17 ) )
       				AND b.meta_value < %d",
       			$wpdb->esc_like( '_site_transient_' ) . '%',
       			$wpdb->esc_like( '_site_transient_timeout_' ) . '%',
       			time()
       		) );
       	}
       }
       ```
   
 *  [Nextendweb](https://wordpress.org/support/users/nextendweb/)
 * (@nextendweb)
 * [7 years, 10 months ago](https://wordpress.org/support/topic/transients-4/#post-10491315)
 * Hi [@philsbury](https://wordpress.org/support/users/philsbury/),
    It turned out
   that object cache used on the site: [https://plugins.svn.wordpress.org/memcached/trunk/object-cache.php](https://plugins.svn.wordpress.org/memcached/trunk/object-cache.php)
 * And when you call `wp_cache_flush();` on every page load, the object cache cleared.
   In this case object cache holds the transients, so our transients get deleted
   and the plugin fails to function properly.
 * When `wp_cache_flush();` commented out, everything works properly. Do you really
   need to flush the cache? Maybe it is a mistake as object cache cleared all the
   time.
 *  Plugin Author [Phil](https://wordpress.org/support/users/philsbury/)
 * (@philsbury)
 * [7 years, 10 months ago](https://wordpress.org/support/topic/transients-4/#post-10491759)
 * Hi [@nextendweb](https://wordpress.org/support/users/nextendweb/),
 * Thanks for your input on this, much appreciated.
 * I’m sure there was a reason for using `wp_cache_flush();`, but was you say, WordPress
   does this whole function for you assuming `DISABLE_WP_CRON` isn’t set to true.
   I’m sure I read somewhere expired transients weren’t automatically removed!
 * I’ll have a look into changing this for my next release as it seems a bit surplus
   to requirements really.
 * Thanks,
    Phil

Viewing 5 replies - 1 through 5 (of 5 total)

The topic ‘transients’ is closed to new replies.

 * ![](https://ps.w.org/age-gate/assets/icon-256x256.png?rev=2783003)
 * [Age Gate](https://wordpress.org/plugins/age-gate/)
 * [Frequently Asked Questions](https://wordpress.org/plugins/age-gate/#faq)
 * [Support Threads](https://wordpress.org/support/plugin/age-gate/)
 * [Active Topics](https://wordpress.org/support/plugin/age-gate/active/)
 * [Unresolved Topics](https://wordpress.org/support/plugin/age-gate/unresolved/)
 * [Reviews](https://wordpress.org/support/plugin/age-gate/reviews/)

 * 5 replies
 * 3 participants
 * Last reply from: [Phil](https://wordpress.org/support/users/philsbury/)
 * Last activity: [7 years, 10 months ago](https://wordpress.org/support/topic/transients-4/#post-10491759)
 * Status: not resolved