4

I am trying to get product categories in WooCommerce, but get_terms() function doesn't work for me. I am getting an empty array.

What I am doing wrong? How to get all Woocommerce product category terms?

LoicTheAztec
  • 184,753
  • 20
  • 224
  • 275
abdul wadood
  • 61
  • 1
  • 4

1 Answers1

8

Product category is a "custom taxonomy" product_cat used by WooCommerce products.

You need to use get_terms(), with the correct taxonomy, this way:

// Get Woocommerce product categories WP_Term objects
$categories = get_terms( ['taxonomy' => 'product_cat'] );

// Getting a visual raw output
echo '<pre>'; print_r( $categories ); echo '</pre>';

You can also get empty product categories using get_terms() like:

$categories = get_terms( ['taxonomy' => 'product_cat', 'hide_empty' => false] );

Tested and works (WordPress 3.5+ and WooCommerce 2.4+)… Both should works for you.

You will get something like:

Array
(
    [0] => WP_Term Object
        (
            [term_id] => 83
            [name] => Uncategorized
            [slug] => uncategorized
            [term_group] => 0
            [term_taxonomy_id] => 83
            [taxonomy] => product_cat
            [description] => 
            [parent] => 0
            [count] => 5
            [filter] => raw
            [meta_value] => 1
        )

    [2] => WP_Term Object
        (
            [term_id] => 11
            [name] => Tshirts
            [slug] => tshirts
            [term_group] => 0
            [term_taxonomy_id] => 11
            [taxonomy] => product_cat
            [description] => 
            [parent] => 0
            [count] => 13
            [filter] => raw
            [meta_value] => 2
        )
    // … and so on …
)
LoicTheAztec
  • 184,753
  • 20
  • 224
  • 275
  • Not working. I am getting this WP_Error Object ( [errors] => Array ( [invalid_taxonomy] => Array ( [0] => Invalid taxonomy. ) ) [error_data] => Array ( ) ) – abdul wadood Apr 12 '19 at 11:54
  • 1
    Sorry but this code is tested and works… the taxonomy for woocommerce categories is "product_cat'… So you are making some confusions, somewhere. – LoicTheAztec Apr 12 '19 at 11:59