wc_update_500_fix_product_review_count() WC 1.0
Fixes product review count that might have been incorrect.
See @link https://github.com/woocommerce/woocommerce/issues/27688.
No Hooks.
Return
Null. Nothing.
Usage
wc_update_500_fix_product_review_count();
Code of wc_update_500_fix_product_review_count() wc update 500 fix product review count WC 5.0.0
function wc_update_500_fix_product_review_count() {
global $wpdb;
$product_id = 0;
$last_product_id = get_option( 'woocommerce_update_500_last_product_id', '0' );
$products_data = $wpdb->get_results(
$wpdb->prepare(
"
SELECT post_id, meta_value
FROM $wpdb->postmeta
JOIN $wpdb->posts
ON $wpdb->postmeta.post_id = $wpdb->posts.ID
WHERE
post_type = 'product'
AND post_status = 'publish'
AND post_id > %d
AND meta_key = '_wc_review_count'
ORDER BY post_id ASC
LIMIT 10
",
$last_product_id
),
ARRAY_A
);
if ( empty( $products_data ) ) {
delete_option( 'woocommerce_update_500_last_product_id' );
return false;
}
$product_ids_to_check = array_column( $products_data, 'post_id' );
$actual_review_counts = WC_Comments::get_review_counts_for_product_ids( $product_ids_to_check );
foreach ( $products_data as $product_data ) {
$product_id = intval( $product_data['post_id'] );
$current_review_count = intval( $product_data['meta_value'] );
if ( intval( $actual_review_counts[ $product_id ] ) !== $current_review_count ) {
WC_Comments::clear_transients( $product_id );
}
}
// Start the run again.
if ( $product_id ) {
return update_option( 'woocommerce_update_500_last_product_id', $product_id );
}
delete_option( 'woocommerce_update_500_last_product_id' );
return false;
}