15
votes

I'm building a plugin for woocommerce and i have some troubles. I'm trying to get all avalible product categories.

the code simply looks like this:

$cats = get_terms('product_cat', array('hide_empty' => 0, 'orderby' => 'ASC',  'parent' =>0));
print_r($cats);

This gives me

WP_Error Object
(
    [errors:WP_Error:private] => Array
        (
            [invalid_taxonomy] => Array
                (
                    [0] => Invalid taxonomy
                )
        )
    [error_data:WP_Error:private] => Array
    (
    )
)

Do i need to hook this to some special init or something? I tried the same code in functions.php but with the same error.

EDIT: Yep, i found a soluiton to the problem. I added

add_action('init', 'runMyPlugin');

did the trick!

2
As you have discovered, taxonomies are not registered until the init hook, so you cannot query them until at least init. Instead of editing, add your solution as an answer. - helgatheviking
Add the function "runMyPlugin" here, please :) - Yaro

2 Answers

4
votes

Just adding a full code example

add_action('init', 'my_get_woo_cats');

function my_get_woo_cats() {
    $cats = get_terms( array( 'taxonomy' => 'product_cat','hide_empty' => 0, 'orderby' => 'ASC',  'parent' =>0) );
    print_r($cats);
}
3
votes

I had the same problem. For Woocomerce you can be resolved by adding the below code in functions.php:

register_taxonomy( 'product_cat', array('product'), array() );