Automattic\WooCommerce\Blocks\Utils
BlocksWpQuery::get_cached_posts()
Get cached posts, if a cache exists.
A hash is generated using the array of query_vars. If doing custom queries via filters such as posts_where (where the SQL query is manipulated directly) you can still ensure there is a unique hash by injecting custom query vars via the parse_query filter. For example:
add_filter( 'parse_query', function( $wp_query ) { $wp_query->query_vars['my_custom_query_var'] = true; } );
Doing so won't have any negative effect on the query itself, and it will cause the hash to change.
Method of the class: BlocksWpQuery{}
No Hooks.
Return
WP_Post[]|Int[]
. Array of post objects or post IDs.
Usage
$BlocksWpQuery = new BlocksWpQuery(); $BlocksWpQuery->get_cached_posts( $transient_version );
- $transient_version(string)
- Transient version to allow for invalidation.
Default: ''
BlocksWpQuery::get_cached_posts() BlocksWpQuery::get cached posts code WC 9.4.2
public function get_cached_posts( $transient_version = '' ) { $hash = md5( wp_json_encode( $this->query_vars ) ); $transient_name = 'wc_blocks_query_' . $hash; $transient_value = get_transient( $transient_name ); if ( isset( $transient_value, $transient_value['version'], $transient_value['value'] ) && $transient_value['version'] === $transient_version ) { return $transient_value['value']; } $results = $this->get_posts(); set_transient( $transient_name, array( 'version' => $transient_version, 'value' => $results, ), DAY_IN_SECONDS * 30 ); return $results; }