get_terms gibt ein leeres Array im Integrationstest zurück

Ich nutze WordPress PHPUnit, um einige Integrationstests durchzuführen, und ich bekomme inkonsistente Ergebnisse, je nachdem ob WooCommerce aktiviert ist oder nicht.

Ohne WooCommerce zu aktivieren, richte ich alle notwendigen Taxonomie- und Termdaten ein, erstelle ein Produkt und markiere es.

$level = $this->factory->post->create( array( 'post_title' => 'Test Product', 'post_type' => 'product', 'post_status' => 'published' ) ); $tagged = wp_set_object_terms($level, 'Level 1', 'product_tag', true); 

Nachdem ich alle meine Beiträge get_the_terms($level, 'product_tag') habe, get_the_terms($level, 'product_tag') ich get_the_terms($level, 'product_tag') erwartet:

 [{" term_id":2,"name":"Level 1","slug":"level-1","term_group":0," term_taxonomy_id":2,"taxonomy":"product_tag","description":"","parent":0,"count":5,"filter":"raw"}] 

In diesem Setup funktioniert alles gut, aber später in meinem Test muss ich laufen

 $args = array( 'post_type' => 'product', 'posts_per_page' => -1, 'product_tag' => $tag ); $products = get_posts( $args ); 

Das gibt keine Produkte zurück – vermutlich weil der product nicht registriert wurde.

Wenn ich in meinem Test WooCommerce aktiviere oder einen product registriere, bekomme ich merkwürdige Ergebnisse. wp_set_object_terms scheint zu funktionieren, da get_the_terms( ... ) für ein einzelnes Produkt ausgeführt wird

 [{"term_id":15,"name":"Level 1","slug":"level-1","term_group":0,"term_taxonomy_id":15,"taxonomy":"product_tag","description":"","parent":0,"count":0,"filter":"raw"}] 

Später in meinem Test wird get_terms( 'product_tag' ) , aber ein leeres Array wird zurückgegeben. Der einzige bemerkenswerte Unterschied zwischen dem Begriff Meta in jeder Einrichtung ist die count . 0 und 5 mit und ohne WooCommerce aktiviert.

Warum sind Produkt-Tags nicht verfügbar, wenn der product Typ registriert ist?

Ich habe auch versucht, mit wp_insert_post anstatt der Factory-Methode, aber es machte keinen Unterschied.

Solutions Collecting From Web of "get_terms gibt ein leeres Array im Integrationstest zurück"