WooCommerce has a strange way to register its tables.
$sql = "
SELECT DISTINCT TABLE_NAME
FROM information_schema.columns
WHERE TABLE_NAME LIKE '{$wpdb->prefix}woocommerce_%'";
$tables = $wpdb->get_col( $sql );
print '<pre>' . print_r( $tables, 1 ) . '</pre>';
Result
Array
(
[0] => subsites_45_woocommerce_attribute_taxonomies
[1] => subsites_45_woocommerce_downloadable_product_permissions
[2] => subsites_45_woocommerce_order_itemmeta
[3] => subsites_45_woocommerce_order_items
[4] => subsites_45_woocommerce_tax_rate_locations
[5] => subsites_45_woocommerce_tax_rates
[6] => subsites_45_woocommerce_termmeta
)
We could expect to get the same tables from $wpdb->tables
to save us a query to information_schema.columns
. But no:
print '<pre>$wpdb->tables: ' . print_r( $wpdb->tables, 1 ) . '</pre>';
Result
$wpdb->tables: Array
(
[0] => posts
[1] => comments
[2] => links
[3] => options
[4] => postmeta
[5] => terms
[6] => term_taxonomy
[7] => term_relationships
[8] => commentmeta
[9] => woocommerce_termmeta
[10] => woocommerce_order_itemmeta
[11] => woocommerce_termmeta
[12] => woocommerce_order_itemmeta
[13] => woocommerce_termmeta
[14] => woocommerce_order_itemmeta
[15] => woocommerce_termmeta
[16] => woocommerce_order_itemmeta
[17] => woocommerce_termmeta
[18] => woocommerce_order_itemmeta
[19] => woocommerce_termmeta
[20] => woocommerce_order_itemmeta
[21] => woocommerce_termmeta
[22] => woocommerce_order_itemmeta
[23] => woocommerce_termmeta
[24] => woocommerce_order_itemmeta
[25] => woocommerce_termmeta
[26] => woocommerce_order_itemmeta
[27] => woocommerce_termmeta
[28] => woocommerce_order_itemmeta
[29] => woocommerce_termmeta
[30] => woocommerce_order_itemmeta
[31] => woocommerce_termmeta
[32] => woocommerce_order_itemmeta
[33] => woocommerce_termmeta
[34] => woocommerce_order_itemmeta
[35] => woocommerce_termmeta
[36] => woocommerce_order_itemmeta
[37] => woocommerce_termmeta
[38] => woocommerce_order_itemmeta
[39] => woocommerce_termmeta
[40] => woocommerce_order_itemmeta
[41] => woocommerce_termmeta
[42] => woocommerce_order_itemmeta
[43] => woocommerce_termmeta
[44] => woocommerce_order_itemmeta
[45] => woocommerce_termmeta
[46] => woocommerce_order_itemmeta
[47] => woocommerce_termmeta
[48] => woocommerce_order_itemmeta
[49] => woocommerce_termmeta
[50] => woocommerce_order_itemmeta
[51] => woocommerce_termmeta
[52] => woocommerce_order_itemmeta
[53] => woocommerce_termmeta
[54] => woocommerce_order_itemmeta
[55] => woocommerce_termmeta
[56] => woocommerce_order_itemmeta
[57] => woocommerce_termmeta
[58] => woocommerce_order_itemmeta
[59] => woocommerce_termmeta
[60] => woocommerce_order_itemmeta
[61] => woocommerce_termmeta
[62] => woocommerce_order_itemmeta
)
Where are the missing tables? Why are these two tables registered again and again?
And now try to copy one site to another in a multisite setup …