Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/woocomme.../src/Blocks/Utils
File: BlocksWpQuery.php
<?php
[0] Fix | Delete
namespace Automattic\WooCommerce\Blocks\Utils;
[1] Fix | Delete
[2] Fix | Delete
use WP_Query;
[3] Fix | Delete
[4] Fix | Delete
/**
[5] Fix | Delete
* BlocksWpQuery query.
[6] Fix | Delete
*
[7] Fix | Delete
* Wrapper for WP Query with additional helper methods.
[8] Fix | Delete
* Allows query args to be set and parsed without doing running it, so that a cache can be used.
[9] Fix | Delete
*
[10] Fix | Delete
* @deprecated 2.5.0
[11] Fix | Delete
*/
[12] Fix | Delete
class BlocksWpQuery extends WP_Query {
[13] Fix | Delete
/**
[14] Fix | Delete
* Constructor.
[15] Fix | Delete
*
[16] Fix | Delete
* Sets up the WordPress query, if parameter is not empty.
[17] Fix | Delete
*
[18] Fix | Delete
* Unlike the constructor in WP_Query, this does not RUN the query.
[19] Fix | Delete
*
[20] Fix | Delete
* @param string|array $query URL query string or array of vars.
[21] Fix | Delete
*/
[22] Fix | Delete
public function __construct( $query = '' ) {
[23] Fix | Delete
if ( ! empty( $query ) ) {
[24] Fix | Delete
$this->init();
[25] Fix | Delete
$this->query = wp_parse_args( $query );
[26] Fix | Delete
$this->query_vars = $this->query;
[27] Fix | Delete
$this->parse_query_vars();
[28] Fix | Delete
}
[29] Fix | Delete
}
[30] Fix | Delete
[31] Fix | Delete
/**
[32] Fix | Delete
* Get cached posts, if a cache exists.
[33] Fix | Delete
*
[34] Fix | Delete
* A hash is generated using the array of query_vars. If doing custom queries via filters such as posts_where
[35] Fix | Delete
* (where the SQL query is manipulated directly) you can still ensure there is a unique hash by injecting custom
[36] Fix | Delete
* query vars via the parse_query filter. For example:
[37] Fix | Delete
*
[38] Fix | Delete
* add_filter( 'parse_query', function( $wp_query ) {
[39] Fix | Delete
* $wp_query->query_vars['my_custom_query_var'] = true;
[40] Fix | Delete
* } );
[41] Fix | Delete
*
[42] Fix | Delete
* Doing so won't have any negative effect on the query itself, and it will cause the hash to change.
[43] Fix | Delete
*
[44] Fix | Delete
* @param string $transient_version Transient version to allow for invalidation.
[45] Fix | Delete
* @return WP_Post[]|int[] Array of post objects or post IDs.
[46] Fix | Delete
*/
[47] Fix | Delete
public function get_cached_posts( $transient_version = '' ) {
[48] Fix | Delete
$hash = md5( wp_json_encode( $this->query_vars ) );
[49] Fix | Delete
$transient_name = 'wc_blocks_query_' . $hash;
[50] Fix | Delete
$transient_value = get_transient( $transient_name );
[51] Fix | Delete
[52] Fix | Delete
if ( isset( $transient_value, $transient_value['version'], $transient_value['value'] ) && $transient_value['version'] === $transient_version ) {
[53] Fix | Delete
return $transient_value['value'];
[54] Fix | Delete
}
[55] Fix | Delete
[56] Fix | Delete
$results = $this->get_posts();
[57] Fix | Delete
[58] Fix | Delete
set_transient(
[59] Fix | Delete
$transient_name,
[60] Fix | Delete
array(
[61] Fix | Delete
'version' => $transient_version,
[62] Fix | Delete
'value' => $results,
[63] Fix | Delete
),
[64] Fix | Delete
DAY_IN_SECONDS * 30
[65] Fix | Delete
);
[66] Fix | Delete
[67] Fix | Delete
return $results;
[68] Fix | Delete
}
[69] Fix | Delete
}
[70] Fix | Delete
[71] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function