wc_update_product_lookup_tables() WC 3.6.0
Populate lookup table data for products.
Хуков нет.
Возвращает
Null. Ничего.
Использование
wc_update_product_lookup_tables();
Список изменений
С версии 3.6.0 | Введена. |
Код wc_update_product_lookup_tables() wc update product lookup tables WC 5.0.0
function wc_update_product_lookup_tables() {
global $wpdb;
$is_cli = Constants::is_true( 'WP_CLI' );
if ( ! $is_cli ) {
WC_Admin_Notices::add_notice( 'regenerating_lookup_table' );
}
// Note that the table is not yet generated.
update_option( 'woocommerce_product_lookup_table_is_generating', true );
// Make a row per product in lookup table.
$wpdb->query(
"
INSERT IGNORE INTO {$wpdb->wc_product_meta_lookup} (`product_id`)
SELECT
posts.ID
FROM {$wpdb->posts} posts
WHERE
posts.post_type IN ('product', 'product_variation')
"
);
// List of column names in the lookup table we need to populate.
$columns = array(
'min_max_price',
'stock_quantity',
'sku',
'stock_status',
'average_rating',
'total_sales',
'downloadable',
'virtual',
'onsale',
'tax_class',
'tax_status', // When last column is updated, woocommerce_product_lookup_table_is_generating is updated.
);
foreach ( $columns as $index => $column ) {
if ( $is_cli ) {
wc_update_product_lookup_tables_column( $column );
} else {
WC()->queue()->schedule_single(
time() + $index,
'wc_update_product_lookup_tables_column',
array(
'column' => $column,
),
'wc_update_product_lookup_tables'
);
}
}
// Rating counts are serialised so they have to be unserialised before populating the lookup table.
if ( $is_cli ) {
$rating_count_rows = $wpdb->get_results(
"
SELECT post_id, meta_value FROM {$wpdb->postmeta}
WHERE meta_key = '_wc_rating_count'
AND meta_value != ''
AND meta_value != 'a:0:{}'
",
ARRAY_A
);
wc_update_product_lookup_tables_rating_count( $rating_count_rows );
} else {
WC()->queue()->schedule_single(
time() + 10,
'wc_update_product_lookup_tables_rating_count_batch',
array(
'offset' => 0,
'limit' => 50,
),
'wc_update_product_lookup_tables'
);
}
}