Automattic\WooCommerce\Blocks\BlockTypes\ProductCollection
QueryBuilder::add_sales_sorting_posts_clauses()
Add the posts_clauses to add sales-based sorting
Method of the class: QueryBuilder{}
No Hooks.
Return
Array
. Modified list of clauses.
Usage
$QueryBuilder = new QueryBuilder(); $QueryBuilder->add_sales_sorting_posts_clauses( $clauses, $query );
- $clauses(array) (required)
- The list of clauses for the query.
- $query(WP_Query) (required)
- The WP_Query instance.
QueryBuilder::add_sales_sorting_posts_clauses() QueryBuilder::add sales sorting posts clauses code WC 9.6.1
public function add_sales_sorting_posts_clauses( $clauses, $query ) { $query_vars = $query->query_vars; $is_product_collection_block = $query_vars['isProductCollection'] ?? false; if ( ! $is_product_collection_block ) { return $clauses; } $orderby = $query_vars['orderby'] ?? null; // The popularity orderby value here is for backwards compatibility as we have since removed the filter option. if ( 'sales' !== $orderby && 'popularity' !== $orderby ) { return $clauses; } $clauses['join'] = $this->append_product_sorting_table_join( $clauses['join'] ); $is_ascending_order = 'asc' === strtolower( $query_vars['order'] ?? 'desc' ); $clauses['orderby'] = $is_ascending_order ? 'wc_product_meta_lookup.total_sales ASC, wc_product_meta_lookup.product_id ASC' : 'wc_product_meta_lookup.total_sales DESC, wc_product_meta_lookup.product_id DESC'; return $clauses; }