Вывод под категорий в меню вордпресс?

Ссылка скопирована
1 ответ

Хочу вывести подкатегории вукомерс в меню.
Шаблон woodmart испытываю проблемы из за того что меню выполено на HTML блоке.
Подскажите варианты как можно осуществить?

Дополнительные вопросы

Покажите Ваши попытки.

Ответы:

Не понял что там у вас за html блок. Категории woocommerce в меню можно вывести так. В админке зайдите в раздел Меню. Там вверху выберите "Настройки экрана". Поставьте галочку на "Категории меню", сохраняйте и пользуйтесь. Refguser @Refguser Делаю ИМ и другие решения По правильному нужно выкинуть "меню выполено на HTML блоке." и создать его нормально средствами ВП.
Иначе - пиши в свой html-блок нужный тебе код со ссылками. И стилями оформляй. + js если нужно.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
2
Mobile-редакция Ответ

В WooCommerce подкатегории в меню лучше выводить не HTML-блоком, а штатным меню WordPress или динамическим кодом. HTML-блок неудобен тем, что его приходится вручную обновлять: добавили категорию, поменяли slug, скрыли пустую категорию — меню уже устарело.

Самый простой вариант без кода:

  1. Откройте «Внешний вид → Меню».
  2. Вверху нажмите «Настройки экрана».
  3. Включите пункт «Категории товаров».
  4. Добавьте нужные категории и подкатегории в меню.
  5. Перетащите подкатегории вправо под родительскую категорию, чтобы получился вложенный пункт.

Если Woodmart строит меню через HTML Block, то этот HTML-блок можно использовать только как контейнер, но внутри лучше вывести динамический shortcode. Например, можно сделать shortcode для списка дочерних категорий:

add_shortcode('product_subcategories_menu', function ($atts) {
    $atts = shortcode_atts([
        'parent' => 0,
    ], $atts);
 
    $terms = get_terms([
        'taxonomy'   => 'product_cat',
        'parent'     => (int) $atts['parent'],
        'hide_empty' => false,
    ]);
 
    if (is_wp_error($terms) || empty($terms)) {
        return '';
    }
 
    $html = '<ul class="product-subcats-menu">';
    foreach ($terms as $term) {
        $html .= '<li><a href="' . esc_url(get_term_link($term)) . '">' . esc_html($term->name) . '</a></li>';
    }
    $html .= '</ul>';
 
    return $html;
});

add_shortcode('product_subcategories_menu', function ($atts) { $atts = shortcode_atts([ 'parent' => 0, ], $atts); $terms = get_terms([ 'taxonomy' => 'product_cat', 'parent' => (int) $atts['parent'], 'hide_empty' => false, ]); if (is_wp_error($terms) || empty($terms)) { return ''; } $html = '<ul class="product-subcats-menu">'; foreach ($terms as $term) { $html .= '<li><a href="' . esc_url(get_term_link($term)) . '">' . esc_html($term->name) . '</a></li>'; } $html .= '</ul>'; return $html; });

Потом в HTML-блоке можно вставить:

[product_subcategories_menu parent="123"]

[product_subcategories_menu parent="123"]

Где 123 — ID родительской категории товаров.

Если нужно полноценное mega menu, проверьте настройки Woodmart: у него обычно есть собственный механизм mega menu и привязки HTML-блоков к пунктам меню. В этом случае правильно создать обычный пункт меню «Каталог», а HTML-блок использовать только для оформления внутри выпадающего меню.

Итог: вручную писать категории в HTML можно только для маленького статичного меню. Для магазина лучше использовать штатные категории товаров или shortcode, чтобы структура не ломалась при изменениях каталога.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

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

Вам также может быть интересно