Ways to disable or limit WordPress postmeta caching

I don’t have full confirmation that they no longer see out of memory issues, but from logging the memory usage at shutdown it appears that this memory issue has likely been reduced by setting the following option in the get_posts call in cartflows: ‘update_post_meta_cache’ => false Obviously this isn’t ideal as a plugin update will … Read more

How to clear capabilities cache?

That added the Settings menu at the left for a logged in Author. Because the author role now has the required capabilities. Then I removed the second line above and the Settings menu remains! That’s because role data is stored in dedicated tables the same way as user meta and posts. It’s not like post … Read more

WPEngine caching + ACF Option field updates: Which cache is the culprit?

For a completely accurate answer you’ll need to ask WPEngine for support, but there’s some general things to consider. Normally when you visit a WordPress page, the WordPress PHP application needs to run so it can retrieve the content from the database and render it using your theme’s templates, and this involves loading and running … Read more

How to create a transient that persists the data for the whole duration of the expiration, even when object cache is enabled?

I eventually used a combination of update_option and WP Cron: // Create the option. update_option(‘foo’, ‘bar’, false); /** * Schedule it to be deleted one week from now. * * @param int Expiration timestamp * @param string Hook that will be invoked * @param string Params to send to the hook callback */ wp_schedule_single_event( time() … Read more

Cache a number of responses from external json feeds?

$body = get_transient( ‘my_api_response_value’ ); if ( false === $body ) { $url=”https://api.myapi.com/chart?ticker=” . $ticker . ”; $response = wp_remote_get($url); if (200 !== wp_remote_retrieve_response_code($response)) { return; } $body = wp_remote_retrieve_body($response); set_transient( ‘my_api_response_value’, $body, 5*MINUTE_IN_SECONDS ); } $formatted_json = json_decode($body, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); We submit a request at the beginning because the transient doesn’t … Read more

Keeping Objects in Memory

This is a perfect use case for Transients. In WordPress, transients are short-lived data objects. By default, they’re persisted to the database using WordPress’ built-in WP_Object_Cache object. However, you can use a variety of caching plugins (Batcache is an outstanding one that works with Memcached) to store Transients in memory. To set a transient, call … Read more