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

Я могу поместить новый пункт меню в конец пунктов меню корневого уровня, используя это:

function bv_show_book_online_menu_item($items, $args) {
    if(bv_can_book_online()) {
        if($args->theme_location == 'main-menu') {
            $items .= '<li><a href="/book/">Book Online</a></li>';
        }
    }
    return $items;
}
add_filter('wp_nav_menu_items','bv_show_book_online_menu_item', 10, 2);

Но как я могу вставить этот предмет в любое место, где захочу? Я на самом деле хочу разместить его в середине подменю следующим образом:

Menu Item
    Submenu Item
    Submenu Item
    <-- Insert new submenu item -->
    Submenu Item
    Submenu Item
Menu Item
    Submenu Item
    Submenu Item
    Submenu Item
etc

1 ответ

Быстрое и грязное решение:

Установить плагин управления видимостью пунктов меню; это позволяет вам условно отображать пункты меню и подменю через страницу меню.

Добавьте свою собственную функцию "my_function" в functions.php или в свой собственный плагин функций сайта. Плагин должен возвращать TRUE, когда должно отображаться подменю.

На странице меню WP Dashboard выберите дополнительное подменю и добавьте это условное function_exists("my_function") && my_function() в это поле видимости. Упрощенно: не падайте, если my_function не может быть найден, и отображать это подменю только когда my_function возвращает TRUE.

Я предполагаю, что этот плагин должен ОЦЕНИТЬ условное в поле видимости. Теоретически это небольшой риск для безопасности. Тем не менее, когда я проверял плагины много поддержки и обзоров (несколько месяцев назад), я не мог найти какие-либо вопросы, вызывающие беспокойство.

Если это беспокоит вас; затем вы можете найти нужный код из исходного кода плагина.

Другие вопросы по тегам