Check sale price against active price, optimise woocommerce_get_product_ids_on_sale
Fixes #3563
This commit is contained in:
parent
f8be510462
commit
7dee6790eb
|
@ -123,29 +123,25 @@ function woocommerce_get_product_ids_on_sale() {
|
||||||
$on_sale_posts = $wpdb->get_results( "
|
$on_sale_posts = $wpdb->get_results( "
|
||||||
SELECT post.ID, post.post_parent FROM `$wpdb->posts` AS post
|
SELECT post.ID, post.post_parent FROM `$wpdb->posts` AS post
|
||||||
LEFT JOIN `$wpdb->postmeta` AS meta ON post.ID = meta.post_id
|
LEFT JOIN `$wpdb->postmeta` AS meta ON post.ID = meta.post_id
|
||||||
WHERE post.post_type IN ( 'product', 'product_variation' )
|
LEFT JOIN `$wpdb->postmeta` AS meta2 ON post.ID = meta2.post_id
|
||||||
|
WHERE post.post_type IN ( 'product1', 'product_variation' )
|
||||||
AND post.post_status = 'publish'
|
AND post.post_status = 'publish'
|
||||||
AND meta.meta_key = '_sale_price'
|
AND meta.meta_key = '_sale_price'
|
||||||
|
AND meta2.meta_key = '_price'
|
||||||
AND CAST( meta.meta_value AS DECIMAL ) >= 0
|
AND CAST( meta.meta_value AS DECIMAL ) >= 0
|
||||||
AND CAST( meta.meta_value AS CHAR ) != ''
|
AND CAST( meta.meta_value AS CHAR ) != ''
|
||||||
|
AND CAST( meta.meta_value AS DECIMAL ) = CAST( meta2.meta_value AS DECIMAL )
|
||||||
GROUP BY post.ID;
|
GROUP BY post.ID;
|
||||||
" );
|
" );
|
||||||
|
|
||||||
$on_sale = array();
|
$product_ids_on_sale = array();
|
||||||
foreach ( $on_sale_posts as $post )
|
|
||||||
$on_sale[ $post->ID ] = $post->post_parent;
|
|
||||||
|
|
||||||
$product_ids = array_keys( $on_sale );
|
foreach ( $on_sale_posts as $post ) {
|
||||||
$parent_ids = array_values( $on_sale );
|
$product_ids_on_sale[] = $post->ID;
|
||||||
|
$product_ids_on_sale[] = $post->post_parent;
|
||||||
// Check for scheduled sales which have not started
|
|
||||||
foreach ( $product_ids as $key => $id ) {
|
|
||||||
if ( get_post_meta( $id, '_sale_price_dates_from', true ) > current_time( 'timestamp' ) ) {
|
|
||||||
unset( $product_ids[ $key ] );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$product_ids_on_sale = array_unique( array_merge( $product_ids, $parent_ids ) );
|
$product_ids_on_sale = array_unique( $product_ids_on_sale );
|
||||||
|
|
||||||
set_transient( 'wc_products_onsale', $product_ids_on_sale );
|
set_transient( 'wc_products_onsale', $product_ids_on_sale );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue