Intereting Posts
Могу ли я искать сообщения и страницы для классов css? пользовательский css и javascript не работают на странице, определенной как шаблон? Получить только X количество категорий Как проверить, существует ли категория ID на странице параметров темы wp_dropdown_categories в пользовательском типе сообщения с пользовательской таксономией Как создать API JSON на основе REST (как изменить код ниже)? Как получить уведомление об устаревших элементах и ​​функциях API? WP Job Manager Resume Add on Отображает значение только что добавленного поля force https кроме одной страницы / сообщения Показать только сообщения за последние 12 месяцев Результат запроса wordpress, показывающий пробел Функциональность изменения модификации плагина Только для зарегистрированных пользователей Share Custom Post Type в Multisite: как перейти на главный блог на экране редактирования сообщений Изменить запрос WordPress Rest Api / Response add_query_vars и канонические ссылки

get_terms возвращает пустой массив в тесте интеграции

Я использую PHPUnit WordPress для запуска некоторых тестов интеграции, и я получаю противоречивые результаты в зависимости от того, активирована ли WooCommerce или нет.

Не активируя WooCommerce, я создал всю необходимую таксономию и данные термина, затем создаю продукт и помечаю его.

$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); 

После пометки всех моих сообщений, если я get_the_terms($level, 'product_tag') он возвращает ожидаемое:

 [{" 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"}] 

В этой настройке все работает нормально, но позже в моем тесте я должен запустить

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

Что не возвращает никаких продуктов – предположительно, потому что тип сообщения product не был зарегистрирован.

Если я активирую WooCommerce в своем тесте или зарегистрирую тип сообщения product , я начинаю получать странные результаты. wp_set_object_terms работает, потому что запуск get_the_terms( ... ) для отдельного продукта вернется

 [{"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"}] 

Позже в моем тесте get_terms( 'product_tag' ) запускается, но возвращается пустой массив. Единственное заметное различие между термином meta в каждой настройке – это count . 0 и 5 с и без WooCommerce, соответственно.

Почему метки продукта недоступны при регистрации типа product ?

Я также пытался использовать wp_insert_post а не фабричный метод, но это не имело никакого значения.

Solutions Collecting From Web of "get_terms возвращает пустой массив в тесте интеграции"