Иерархические Теги Продуктов в WooCommerce
В этой статье мы расскажем о том, как изменить теги продуктов в WooCommerce, чтобы они отображались в виде иерархии. Проще говоря, мы ответим на вопрос: «Как сделать теги продуктов в WooCommerce иерархическими?».
Что такое иерархические теги?
Иерархические теги позволяют объединить теги в группы, что упрощает организацию и поиск контента. Например, если у вас есть теги «Электроника», под которыми могут быть более конкретные теги, такие как «Телевизоры» и «Ноутбуки», это делает навигацию более удобной как для вас, так и для ваших клиентов.
Как реализовать иерархические теги в WooCommerce
Ниже представлен код, который поможет вам сделать теги иерархическими. Вставьте его в файл functions.php
вашей темы.
Heirarchical_WC_Tag::init();
/**
- Делает теги продуктов в WooCommerce иерархическими.
- Также позволяет указать одинаковый префикс для таксономий категории и тегов продукта.
- @author Kama (wp-kama.com)
-
@version 0.1
*/
class Heirarchical_WC_Tag {public static function init(): void {
add_action( 'init', [ CLASS, 'modify_product_tag_taxonomy' ], 20 );
}public static function modify_product_tag_taxonomy(): void {
global $wp_taxonomies;$cat = &$wp_taxonomies['product_cat']; $tag = &$wp_taxonomies['product_tag']; $tag->rewrite['hierarchical'] = true; // для формирования связного URL $tag->hierarchical = true; $tag->meta_box_cb = 'post_categories_meta_box'; // Исправляем переменные запроса, если префиксы URL категорий и тегов одинаковы. if( $tag->rewrite['slug'] === $cat->rewrite['slug'] ) { add_filter( 'request', [ __CLASS__, 'fix_product_tag_request_var' ] ); }
}
public static function fix_product_tag_request_var( $vars ) {
if( ! empty( $vars['product_cat'] ) ) {
$_cat_parts = explode( '/', $vars['product_cat'] );
$_parts_end = end( $_cat_parts );$tag_exists = get_term_by( 'slug', $_parts_end, 'product_tag' ); if( $tag_exists ) { $vars['product_tag'] = $vars['product_cat']; unset( $vars['product_cat'] ); } } return $vars;
}
}
Пояснение кода
-
��ласс Heirarchical_WC_Tag: Мы создаем класс, который будет содержать методы для работы с иерархическими тегами.
-
Метод init(): Этот метод начинает процесс, вызывая
modify_product_tag_taxonomy
, когда инициализируется WordPress. -
Метод modify_product_tag_taxonomy(): Здесь мы изменяем параметры тегов продуктов. Устанавливаем иерархическую структуру для тегов и исправляем URL, если префиксы категорий и тегов совпадают.
-
Метод fix_product_tag_request_var: Этот метод проверяет запросы на наличие тегов и категорий и корректирует их, если это необходимо.
Заключение
Теперь вы знаете, как сделать теги продуктов в WooCommerce иерархическими. Эта функция значительно облегчает управление продуктами и улучшает пользовательский опыт на вашем сайте. Если у вас возникнут вопросы или потребуется помощь, не стесняйтесь обращаться за поддержкой!