К основному контенту

Особенность Walker_Nav_Menu при разработке для WordPress

В одном из своих проектов для WordPress столкнулся с непонятной проблемой при выводе меню. На одной из страниц сайта формировался рабочий стол, который задавался с помощью меню. Вся разработка проводилась локально на Denwer и все было чудесно до тех пор, пока не начался переезд на хостинг.
После переезда меню съехало и стало выводиться вместе со всем меню до заголовка страницы. Проблема была в классе, унаследованном от Walker_Nav_Menu. Спустя пару-тройку часов поисков хотя бы намека на причину решил сравнить два класса вывода меню. Разница была только в использовании буфера вывода.
Класс вывода меню, который не работал, использовал функции ob_start и ob_get_clean для формирования вывода. Заменив такой вывод на строки PHP все стало работать как часы.

Так не работает:

class ls_dashboard_menu_walker extends Walker_Nav_Menu
{
 
    public function start_lvl(&$output, $depth = 0, $args = array())
    {
        if ($depth == 1):
            ob_start();
            ?>
   <div class="row"> <!-- start row -->
   <?php
   $output .= ob_get_clean();
  endif;
 }

А так - работает:

class ls_dashboard_menu_walker extends Walker_Nav_Menu
{
 
    public function start_lvl(&$output, $depth = 0, $args = array())
    {
        if ($depth == 1):
            $output .= '<div class="row">';
        endif;
    }

Комментарии

Популярные сообщения из этого блога

Прямые ссылки на файлы Google диска

В предыдущей статье я рассказал, как подключить свой JavaScript файл к блогу BLOGSPOT . Но для того, что бы их подключить нужны прямые ссылки на файл, а Google диск при предоставлении общего доступа к файлу выдает ссылку на предварительный просмотр, которая никак напрямую не ссылается на файл. Для Google диска прямая ссылка на файл - это ссылка на скачивание. Ниже описаны два способа создания ссылки на скачивание на примере файла prism.js.

События для ведения таблиц

Как и всегда, в пылу проекта внезапно родилась Z табличка. Главный нюанс был в том, что она должна была хранить пароли для авторизации на стороннем сервере. Естественно, никто не хотел хранить пароли в открытом виде, а двустороннее шифрование SAP не умеет без сторонних пакетов и надстроек. Далее, все как обычно - придумали алгоритм, сделали табличку. Дело осталось за малым - нужно шифровать пароли, которые вводит пользователь. Делать отдельную программу нет смысла, поскольку ее функционал мало чем будет отличаться от сгенерированного. Вот здесь на помощь приходят события! С их помощью можно, наверное, все. По крайней мере, я не нашел чего-либо, что нельзя сделать с данными через события.

OOP ALV GRID с HTML шапкой

В этой статье хочу постараться подробно описать и привести пример, как можно создать ALV отчет с таблицей на весь экран и с HTML шапкой вверху. Я не буду описывать начальный этап, где пишется селекционный экран или делается выборка данных. Будем считать, что основа у нас есть и нам нужно просто вывести данные. Главной изюминкой является то, что нужно вывести ALV GRID на экран без использования каких-либо дополнительных элементов на экране. Step-By-Step Шаг 1. Создание окна Создаем самое простое окно с номером 100. На него не нужно кидать никаких контейнеров. Оно нам нужно только для модулей PAI и PBO и вывода на него ALV GRID.