У меня есть настройка WooCommerce, и когда я создаю новый продукт, я назначаю ему категорию продукта как обычно.
Clothing
- Womens
-- Accessories
- Mens
-- Accessories <-- assigned to this term
Что я пытаюсь достичь:
Когда я выбираю дочернюю категорию, я также хочу установить эту запись для каждой родительской категории, расположенной над ней. В этом случае это будет выглядеть следующим образом:
Clothing <-- assigned to this term
- Womens
-- Accessories
- Mens <-- assigned to this term
-- Accessories <-- assigned to this term
Примечание. Большинство моих продуктов создаются из интерфейса другие пользователи, поэтому я не могу просто выбрать другие поля, я знаю, что это вариант.
Моя попытка до сих пор:
function set_product_parent_categories( $post_id ) {
$term_ids = wp_get_post_terms( $post_id, 'product_cat' );
foreach( $term_ids as $term_id ) {
if( $term_id->parent > 0 ) {
// Assign product to the parent category too.
wp_set_object_terms( $post_id, $term_id->parent, 'product_cat' );
}
}
}
add_action( 'woocommerce_update_product', __NAMESPACE__.'\\set_product_parent_categories', 10, 1 );
Это устанавливает только верхний родительский термин.