Как я могу получить категории и подкатегории отдельно?

Вопрос или проблема

Я использую этот код для получения категорий и подкатегорий с референсной страницы. Это довольно удобно, так как позволяет сортировать их иерархически. Но я хотел бы назначить им два разных стиля (один для категорий и один для подкатегорий). Как я могу это сделать?

        <ul class="chip-list">
            <?php $categories = wp_get_post_terms( get_the_id(), 'portfolio_category', array( 'orderby' => 'term_order'));
            if( $categories ): ?>
                <?php foreach( $categories as $category ): ?>
                <li>
                    <a class="chip chip__portfolio--category" href="<?php echo esc_url( get_category_link( $category->term_id ) ); ?>">
                        <?php echo $category->name; ?>
                    </a>
                </li>
                <?php endforeach; ?>
            <?php endif; ?>
        </ul>

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

<ul class="chip-list">
    <?php 
    $categories = wp_get_post_terms( get_the_ID(), 'portfolio_category', array( 'orderby' => 'term_order' ) );
    if ( $categories ): ?>
        <?php foreach ($categories as $category): ?>
            <li>
                <?php if ( $category->parent == 0 ): // Родительская категория ?>
                    <a class="chip chip__portfolio--category" href="<?php echo esc_url(get_category_link($category->term_id)); ?>">
                        <?php echo $category->name; ?>
                    </a>
                <?php else: // Подкатегория ?>
                    <a class="chip chip__portfolio--subcategory" href="<?php echo esc_url(get_category_link($category->term_id)); ?>">
                        <?php echo $category->name; ?>
                    </a>
                <?php endif; ?>
            </li>
        <?php endforeach; ?>
    <?php endif; ?>
</ul>

Ответ или решение

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

Вот обновленный код, который позволит вам это реализовать:

<ul class="chip-list">
    <?php 
    // Получаем категории
    $categories = wp_get_post_terms(get_the_ID(), 'portfolio_category', array('orderby' => 'term_order'));

    if ($categories): ?>
        <?php foreach ($categories as $category): ?>
            <li>
                <?php if ($category->parent == 0): // Если это родительская категория ?>
                    <a class="chip chip__portfolio--category" href="<?php echo esc_url(get_category_link($category->term_id)); ?>">
                        <?php echo esc_html($category->name); ?>
                    </a>
                <?php else: // Если это подкатегория ?>
                    <a class="chip chip__portfolio--subcategory" href="<?php echo esc_url(get_category_link($category->term_id)); ?>">
                        <?php echo esc_html($category->name); ?>
                    </a>
                <?php endif; ?>
            </li>
        <?php endforeach; ?>
    <?php endif; ?>
</ul>

Объяснение кода:

  1. Получение категорий: Используя функцию wp_get_post_terms(), мы получаем все категории для текущего поста, сортируя их по порядку.

  2. Цикл по категориям: Мы проходим по всем категориям с помощью цикла foreach.

  3. Проверка на родительскую категорию:

    • С помощью условия if ($category->parent == 0) проверяем, является ли категория родительской. Если это так, применяем класс chip__portfolio--category.
    • В противном случае, если категория является подкатегорией, используем класс chip__portfolio--subcategory.
  4. Экранирование вывода: Функция esc_html() используется для безопасного вывода имени категории, что предотвращает возможные XSS-атаки.

Заключение:

Теперь у вас есть код, который позволяет вам разделить категории и подкатегории с соответствующим их стилизованием. Вы можете добавить CSS-правила для классов chip__portfolio--category и chip__portfolio--subcategory в ваш файл стилей, чтобы настроить внешний вид для каждой группы категорий по вашему вкусу. Это позволит улучшить визуальное восприятие и организацию контента на вашем сайте.

Оцените материал
Добавить комментарий

Капча загружается...