I have a problem with categories and subcategories in WordPress plugin - WooCommerce. I'm creating a script which would create a categories and subcategories, the problem is that I don't fully understand how all this works in WooCommerce DB structure.
That's what I was able to do:
In "wp_terms":
term_id | name | slug | term group
20 | Parent category | parent | 0
21 | Children category | children | 0
In "wp_term_taxonomy":
term_taxonomy_id | term_id | taxonomy | description | parent | count
1 | 20 | product_cat | | 0 | 0
2 | 21 | product_cat | | 20 | 0
And that's working, but why the hell this don't:
In "wp_term_taxonomy":
term_taxonomy_id | term_id | taxonomy | description | parent | count
1 | 20 | product_cat | | 21 | 0
2 | 21 | product_cat | | 0 | 0
To start with, the WooCommerce products are mainly stored in two default WordPress tables wp_posts and wp_postmeta.
WooCommerce uses a combination of both WordPress database tables and its own custom tables to store its data. However, WooCommerce doesn't have a dedicated table to store the customer data. The customer data is stored in different database tables, which sometimes might make retrieval of this data challenging.
The categories for both posts and links and the tags for posts are found within the wp_terms table. Each term features information called the meta data and it is stored in wp_termmeta.
In conclusion, WooCommerce stores all of its data in the same database as WordPress. You can access this data by logging into your WordPress site and going to the WooCommerce->Settings->Advanced page. Alternatively, you can connect to your WordPress database using a tool like phpMyAdmin.
function getParentCategories() {
global $wpdb;
$sql = "SELECT term_id as id, name, slug FROM wp_terms where term_id in (SELECT term_id FROM wp_term_taxonomy where parent = 0 and taxonomy = 'category') order by name asc";
$parents = $wpdb->get_results( $sql );
return $parents;
}
function getChildCategories($id) {
global $wpdb;
$sql = "SELECT term_id as id, name, slug FROM wp_terms where term_id in (SELECT term_id FROM wp_term_taxonomy where parent = $id and taxonomy = 'category') order by name asc";
$children = $wpdb->get_results( $sql );
return $children;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With