Вопрос или проблема
При добавлении категории в меню мне нужно, чтобы автоматически отображался список всех элементов, относящихся к этой категории, в отдельном UL
. Вот так
https://i.sstatic.net/ulOOS.jpg
Конечно, я могу сделать это вручную, но я ищу способ добавить фильтр, возможно, к функции wp page menu
, но не уверен, как это можно сделать.
Я использую thematic
дочернюю тему.
Спасибо.
Если вы перейдете на страницу меню, затем нажмете на «Параметры экрана» в верхнем правом углу страницы. Вы можете выбрать «Записи». Это позволит вам добавить запись в навигационное меню. Затем просто перетащите её под категорию, к которой она относится. Вам нужно будет убедиться, что вы используете кастомное меню.
Начните с перехода в Внешний вид – Меню. Выберите меню, где вы хотите отобразить ссылку. Создайте новый элемент меню ссылки и используйте # в качестве URL с текстом ссылки «категории». Затем нажмите на Кнопку добавления в меню.
Выберите, какие категории вы хотите отображать в выпадающем списке. После того как вы добавили категории в меню, обязательно перетащите их так, чтобы они стали дочерними ссылками под родительским меню категорий. Посмотрите на следующий скриншот для справки.
После того как вы расставили ссылки категорий, сохраните меню. Посетите свою главную страницу и наведите курсор на ссылку категорий, чтобы убедиться, что выпадающий список работает правильно. Родительский элемент меню категорий действует как заполнител, что является гениальной частью урока.
После того как вы расставили ссылки категорий, сохраните меню. Посетите свою главную страницу и наведите курсор на ссылку категорий, чтобы убедиться, что выпадающий список работает правильно. Родительский элемент меню категорий действует как заполнител, что является гениальной частью урока.
Ответ или решение
Для достижения вашей цели по автоматическому отображению постов под соответствующими категориями в меню в WordPress, необходимо воспользоваться функциями и хуками, доступными в вашем тематическом дочернем шаблоне (thematic). Давайте рассмотрим пошагово, как вы можете реализовать данное решение.
Шаг 1: Создание кастомного меню
- Перейдите в админ-панель WordPress и выберите Внешний вид → Меню.
- Убедитесь, что у вас создано кастомное меню. Если его нет, создайте новое.
- Включите Посты в настройках на экране, активировав его в разделе Настройки экрана.
Шаг 2: Добавление категорий в меню
- Найдите нужные категории в левом боковом меню и нажмите на них, чтобы добавить в меню.
- Создайте элемент меню для главной категории. Для этого используйте любой URL (например,
#
) с текстом, который будет отображаться на сайте (например, "Категории"). - Переместите добавленные категории под основной элемент, чтобы они стали подменю.
Шаг 3: Автоматизация добавления постов
Теперь, если вы хотите автоматизировать процесс отображения постов под категориями, вам требуется немного кастомного PHP-кода. Добавьте следующий код в файл functions.php
вашего дочернего шаблона:
function add_posts_to_menu($items, $args) {
// Убедитесь, что это нужное меню
if ($args->theme_location == 'main-menu') {
// Получаем все категории
$categories = get_categories();
foreach ($categories as $category) {
// Вставляем ссылку на категорию в меню
$items .= '<li class="menu-item menu-item-type-taxonomy menu-item-object-category"><a href="' . get_category_link($category->term_id) . '">' . $category->name . '</a>';
// Получаем посты в текущей категории
$posts = get_posts(array(
'category' => $category->term_id
));
if ($posts) {
$items .= '<ul>'; // Начало вложенного списка
foreach ($posts as $post) {
$items .= '<li><a href="' . get_permalink($post->ID) . '">' . $post->post_title . '</a></li>';
}
$items .= '</ul>'; // Конец вложенного списка
}
$items .= '</li>'; // Закрываем элемент меню
}
}
return $items;
}
add_filter('wp_nav_menu_items', 'add_posts_to_menu', 10, 2);
Шаг 4: Тестирование и настройка
- После добавления данного кода, обновите ваше меню и посмотрите, как отобразятся элементы на сайте.
- Проверьте, корректно ли отображаются посты под соответствующими категориями.
- При необходимости выполните стилизацию через CSS для лучшего визуального восприятия.
Заключение
Таким образом, следуя вышеизложенным шагам, вы сможете автоматически добавлять посты под их категориями в меню вашего сайта на WordPress. Такой подход не только сэкономит ваше время, но и улучшит удобство навигации для ваших пользователей. Этот метод также положительно скажется на SEO, так как удобная структура меню облегчает индексацию поисковыми системами.
Если у вас остались вопросы или вам нужна дополнительная поддержка, не стесняйтесь обращаться.