Иерархические Теги в WooCommerce: Полное Руководство

Иерархические Теги Продуктов в 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;

    }
    }

Пояснение кода

  1. ��ласс Heirarchical_WC_Tag: Мы создаем класс, который будет содержать методы для работы с иерархическими тегами.

  2. Метод init(): Этот метод начинает процесс, вызывая modify_product_tag_taxonomy, когда инициализируется WordPress.

  3. Метод modify_product_tag_taxonomy(): Здесь мы изменяем параметры тегов продуктов. Устанавливаем иерархическую структуру для тегов и исправляем URL, если префиксы категорий и тегов совпадают.

  4. Метод fix_product_tag_request_var: Этот метод проверяет запросы на наличие тегов и категорий и корректирует их, если это необходимо.

Заключение

Теперь вы знаете, как сделать теги продуктов в WooCommerce иерархическими. Эта функция значительно облегчает управление продуктами и улучшает пользовательский опыт на вашем сайте. Если у вас возникнут вопросы или потребуется помощь, не стесняйтесь обращаться за поддержкой!

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *