Skip to content

Instantly share code, notes, and snippets.

@thefuxia
Last active August 29, 2015 14:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save thefuxia/23b7e2540ece76a0a640 to your computer and use it in GitHub Desktop.
Save thefuxia/23b7e2540ece76a0a640 to your computer and use it in GitHub Desktop.
WooCommerce insanity

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 …

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment