Skip to content
This repository has been archived by the owner on Feb 23, 2024. It is now read-only.

Commit

Permalink
Product Query: make sure request params are set when enhancing REST q…
Browse files Browse the repository at this point in the history
…uery (#7796)

This fixes a bug in which in certain cases Products wouldn't load in the editor because the Product Query
block was doing some REST API request with some invalid parameters.
sunyatasattva authored Dec 1, 2022

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent 4837427 commit d3a846a
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions src/BlockTypes/ProductQuery.php
Original file line number Diff line number Diff line change
@@ -120,11 +120,13 @@ public function update_query( $pre_render, $parsed_block ) {
* @param WP_REST_Request $request Request.
*/
public function update_rest_query( $args, $request ) {
$on_sale_query = $request->get_param( '__woocommerceOnSale' ) !== 'true' ? array() : $this->get_on_sale_products_query();
$orderby_query = $this->get_custom_orderby_query( $request->get_param( 'orderby' ) );
$tax_query = $this->get_product_attributes_query( $request->get_param( '__woocommerceAttributes' ) );
$orderby = $request->get_param( 'orderby' );
$woo_attributes = $request->get_param( '__woocommerceAttributes' );
$on_sale_query = $request->get_param( '__woocommerceOnSale' ) === 'true' ? $this->get_on_sale_products_query() : array();
$orderby_query = isset( $orderby ) ? $this->get_custom_orderby_query( $orderby ) : array();
$attributes_query = is_array( $woo_attributes ) ? $this->get_product_attributes_query( $woo_attributes ) : array();

return array_merge( $args, $on_sale_query, $orderby_query, $tax_query );
return array_merge( $args, $on_sale_query, $orderby_query, $attributes_query );
}

/**
@@ -287,7 +289,7 @@ private function get_custom_orderby_query( $orderby ) {
*
* @return array
*/
private function get_product_attributes_query( $attributes ) {
private function get_product_attributes_query( $attributes = array() ) {
$grouped_attributes = array_reduce(
$attributes,
function ( $carry, $item ) {

0 comments on commit d3a846a

Please sign in to comment.