wp_nav_menu, похоже, не работает на страницах пользовательских типов записей

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

Я работаю над проектом, который кто-то другой настроил, и на главной странице навигация отображается, но на страницах произвольных типов записей — нет.

Навигационное меню:

 wp_nav_menu([
                'menu'              => 'Основное меню',
                'theme_location'    => 'primary',
                'depth'             => 3,
                'container'         => 'div',
                'container_class'   => 'a',
                'container_id'      => 'b',
                'menu_class'        => 'nav navbar-nav',
                'fallback_cb'       => 'wp_bootstrap_navwalker::fallback',
                'walker'            => new wp_bootstrap_navwalker()
        ]);

Я видел предложения поместить это в функцию и использовать оператор if, чтобы сделать что-то, а на других страницах использовать эту навигационную функцию. Моя проблема в том, что я не знаю, что подставить в wp_nav_menu() для страниц произвольных типов записей, чтобы она отображалась.

Например, адрес URL выглядит так: http://example.com/product-category/thing/

Вы можете просто добавить эти параметры в массив и передать его в wp_nav_menu() следующим образом:

function get_menu_params(){

    $defaults = array(
        'menu'              => 'Основное меню',
        'theme_location'    => 'primary',
        'depth'             => 3,
        'container'         => 'div',
        'container_class'   => 'a',
        'container_id'      => 'b',
        'menu_class'        => 'nav navbar-nav',
        'fallback_cb'       => 'wp_bootstrap_navwalker::fallback',
        'walker'            => new wp_bootstrap_navwalker()
    );                          
    return $defaults;
}

И вызывайте это на страницах произвольных типов записей следующим образом:

wp_nav_menu( get_menu_params( ) );

Это поможет вам.

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

Ваша проблема с отображением навигационного меню на страницах пользовательских типов постов может быть связана с несколькими факторами. Я предлагаю вам несколько шагов, которые помогут правильно интегрировать wp_nav_menu() на эти страницы.

  1. Проверьте регистрацию меню: Убедитесь, что меню зарегистрировано в вашей теме. Это можно сделать в файле functions.php, используя функцию register_nav_menus(). Пример:

    function register_my_menus() {
        register_nav_menus(array(
            'primary' => __('Primary Menu'),
        ));
    }
    add_action('init', 'register_my_menus');
  2. Используйте параметры в функции wp_nav_menu(): Вы можете создать функцию для удобства и указания параметров вашего меню. Это может выглядеть так:

    function get_menu_params() {
        $defaults = array(
            'menu'              => 'Primary Menu',
            'theme_location'    => 'primary',
            'depth'             => 3,
            'container'         => 'div',
            'container_class'   => 'a',
            'container_id'      => 'b',
            'menu_class'        => 'nav navbar-nav',
            'fallback_cb'       => 'wp_bootstrap_navwalker::fallback',
            'walker'            => new wp_bootstrap_navwalker()
        );                          
        return $defaults;
    }
  3. Вывод меню на страницах пользовательских типов постов: В вашем шаблоне (например, single-your_custom_post_type.php) вы можете вызвать меню следующим образом:

    wp_nav_menu(get_menu_params());
  4. Проверка в шаблонах: Убедитесь, что в файлах шаблонов ваших пользовательских типов постов (например, single-product.php) находится вызов wp_nav_menu(). Если у вас есть различные шаблоны для разных категорий или типов постов, убедитесь, что меню вызывается везде, где это необходимо.

  5. Отладка: Если меню не отображается, проверьте наличие ошибок в консоли разработчика (F12) и обратитесь к файлам журнала ошибок сервера. Также проверьте, что меню действительно содержит элементы, которые вы ожидаете видеть.

  6. Оптимизация видимости меню на разных страницах: Если вы хотите показать меню только на определённых страницах, можете использовать условные теги:

    if (is_post_type_archive('your_custom_post_type') || is_singular('your_custom_post_type')) {
        wp_nav_menu(get_menu_params());
    }

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

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

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