По второму вопросу - потому что по умолчанию хлебные крошки выводятся для вложенности от 1 уровня. Для главной, где вложенность 0 - не выводятся вообще. Изучите класс
woocommerce/includes/class-wc-breadcrumb.php
чтобы понимать как они вообще работают.
Смотрите код тут.
Обратите внимание на хук
woocommerce_get_breadcrumb
- в нем вам доступны элементы хлебных крошек в виде массива, который вы можете модифицировать - добавить/удалить/заменить определенный элемент (или элементы).
Также, у вас есть темплейт для вывода хлебных крошек
woocommerce/templates/global/breadcrumb.php
, который вы можете скопировать себе в папку темы (сохраняя вложенность пути, смотрите заголовок-комментарий шаблона и документацию Woo) и сделать свой вывод.
Смотрите код файла тут.
Что касается двух категорий товаров - в хлебных крошках выводится
первый термин, полученный функцией
wc_get_product_terms( $post->ID, 'product_cat', array( 'orderby' => 'parent', 'order' => 'DESC' ) );
. Есть небольшой хак - переименовать вашу "служебную" категорию так, чтобы она прилетала второй в списке. При необходимости - изменить параметр сортировки через хук. Либо вообще в этом хуке отфильтровать "служебную" категорию совсем (но надо поковырять conditionals чтобы убрать ее только в нужных местах):
function change_breadcrumb( $main_term ) {
// Проверьте что пришло
var_dump( $main_term );
return $main_term;
}
add_filter( 'woocommerce_breadcrumb_main_term', 'change_breadcrumb' );