I do a lot of integration work between e-commerce cart software packages and third party systems. Many e-commerce carts (Sunshop, VirtueMart, ZenCart, etc.) maintain their own database tables for storing orders, product, categories and everything the cart needs for the store to operate. Accessing data from these tables is straightforward; the data is normalized for a cart application, with no meta representation of data. Translation: In a typical cart database, you’ll find an order table, a product table, a customer table, a product category table, etc. It’s not difficult to extract details about what takes place in the cart.
WooCommerce has become a very popular e-commerce cart, riding on the coattails of WordPress’ great success. I’ve implemented WooCommerce a number of times and I think it’s an excellent, light-duty cart. As a WordPress plugin, WooCommerce benefits from other, 3rd party plugins for expanding the cart’s functionality. But what happens when you have to deal with a one-of-a-kind integration between Woo Commerce and a system for which there is no plugin solution? We quickly find ourselves digging into the WordPress database architecture, since WooCommerce uses a blend of it’s own tables and WordPress post and taxonomy tables to store data.
Below are some basic MySQL queries for getting WooCommerce products, categories, orders, and order items from the database. All of the queries assume the default “wp_” prefix to the database tables, so you may need to modify those prefixes if your tables are named differently. I’ve also left some example product and order numbers in place to complete the syntax of the queries. I’ve highlighted those values in the examples. Change to suit your particular use.
These are raw MySQL queries. I use them in SQLyog, an excellent MySQL admin tool. If you’re writing a PHP script for your own application needs, you can adapt these queries into your code. Lots of example of how to do that at php.net.
Query #1: Return a list of product categories
۱
۲
۳
۴
|
SELECT wp_terms.*
FROM wp_terms
LEFT JOIN wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id
WHERE wp_term_taxonomy.taxonomy = ‘product_cat’
|
Query #2: Get the category for a specific product
۱
۲
۳
۴
۵
۶
|
SELECT wp_term_relationships.*,wp_terms.* FROM wp_term_relationships
LEFT JOIN wp_posts ON wp_term_relationships.object_id = wp_posts.ID
LEFT JOIN wp_term_taxonomy ON wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id
LEFT JOIN wp_terms ON wp_terms.term_id = wp_term_relationships.term_taxonomy_id
WHERE post_type = ‘product’ AND taxonomy = ‘product_cat’
AND object_id = 167
|
In above example, we’re getting the category for product 167; substitute your desired product ID, which you can find in the WooCommerce Products admin menu area.
Query #3: Return a list of product attributes for a specific product
۱
۲
۳
۴
|
SELECT wp_posts.ID,wp_posts.post_title,wp_postmeta.* FROMwp_posts
LEFT JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id
WHERE post_type = ‘product’
AND wp_posts.ID = 167
|
In above example, we’re getting the attributes for product 167; substitute your desired product ID, which you can find in the WooCommerce Products admin menu area.
Query #4: Return a list of line item details for a specific order
۱
۲
۳
۴
۵
|
SELECT wp_woocommerce_order_itemmeta.*,wp_woocommerce_order_items.*
FROMwp_woocommerce_order_items
JOIN wp_woocommerce_order_itemmeta ON wp_woocommerce_order_itemmeta.order_item_id = wp_woocommerce_order_items.order_item_id
WHERE order_id = 7373
ORDER BY wp_woocommerce_order_itemmeta.meta_key
|
In above example, we’re getting the line item details for order 7373; substitute your desired order ID, which you can find in the WooCommerce Orders admin menu area.
Ref: http://zjstech.com/basic-woocommerce-mysql-queries-for-orders-products-and-categories/