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

Я разрабатываю навигацию по каталогу и столкнулся с проблемой. Не могу найти подходящий плагин или код, который обеспечил бы логичную структуру: при входе в основную категорию пользователь должен видеть подкатегории, однако при переходе в подкатегории отображаются либо все основные категории, либо ничего не выводится. Нужно, чтобы отображались все подкатегории конкретной основной категории. Например, в категории "Ежедневники" должны выводиться все её подкатегории.
  • 19 марта 2025 г. 13:24
Ответы на вопрос 1
Для реализации функционала отображения подкатегорий определённой категории в вашем каталоге, можно использовать стандартные функции доступа к категорий в CMS (например, WordPress или другую платформу), или если у вас собственная система, можно написать соответствующий код.

### Пример для WordPress

Если вы используете WordPress, вы можете использовать функцию `get_terms()`, чтобы получить подкатегории для определённой категории. Вот пример кода:

```php
function display_subcategories($parent_category_id) {
    $args = array(
        'taxonomy'   => 'category',
        'child_of'   => $parent_category_id,
        'hide_empty' => false, // если хотите отображать пустые подкатегории, поменяйте на true
    );

    $subcategories = get_terms($args);

    if (!empty($subcategories)) {
        echo '<ul>';
        foreach ($subcategories as $subcategory) {
            echo '<li>';
            echo '<a href="' . get_term_link($subcategory) . '">' . esc_html($subcategory->name) . '</a>';
            echo '</li>';
        }
        echo '</ul>';
    } else {
        echo 'Нет подкатегорий.';
    }
}

// Вызов функции с ID родительской категории
display_subcategories(10); // замените 10 на ID вашей категории "Ежедневники"
```

### Пример для кастомной системы

Если у вас собственная система, то подход будет зависеть от структуры вашей базы данных. Предположим, что у вас есть таблица `categories`, где есть поля `id`, `name`, и `parent_id`, и вы хотите получить все подкатегории для категории:

```php
function get_subcategories($parent_id) {
    // Подключение к базе данных
    $pdo = new PDO('mysql:host=localhost;dbname=your_database_name', 'username', 'password');

    // Запрос на получение подкатегорий
    $stmt = $pdo->prepare('SELECT * FROM categories WHERE parent_id = :parent_id');
    $stmt->execute(['parent_id' => $parent_id]);

    return $stmt->fetchAll();
}

$subcategories = get_subcategories(10); // Замените на ID нужной категории

if (count($subcategories) > 0) {
    echo '<ul>';
    foreach ($subcategories as $subcategory) {
        echo '<li>' . htmlspecialchars($subcategory['name']) . '</li>';
    }
    echo '</ul>';
} else {
    echo 'Нет подкатегорий.';
}
```

### Подходы для других CMS

Если вы используете другую CMS, ознакомьтесь с документацией по ее API для работы с категориями. Обычно есть аналогичные функции или методы для получения подкатегорий.

### Дополнительные аспекты

1. Убедитесь, что вы обрабатываете ситуации, когда категории могут быть пустыми.
2. Используйте `esc_html()` или его аналог для безопасного отображения данных из базы.
3. Если у вас уже есть структура с использованием плагинов, возможно, потребуется внести изменения в настройки или поискать в документации возможности для фильтрации категорий.
Похожие вопросы