Вообще, определить вывод требуемым образом не должно составить труда, все есть в кодексе. Однако, если нет желания править код вывода можно изменить css, суть не изменится.
Все, что нужно сделать это #nav
заменить на .menu
. Единственное, что следует предусмотреть, так это то, что класс .menu
может использоваться где-то еще в блоке #header
.
Пробовал ставить .menu — но не помогло. Нашёл какой-то вариант, якобы генерировать своё меню через Walker_Nav_Menu. Ок.
Делаю такой код:
class mainMenuWalker extends Walker_Nav_Menu {
function start_el(&$output, $item, $depth, $args) {
// назначаем атрибуты a-элементу
$attributes.= !empty( $item->url ) ? ' href="' .esc_attr($item->url). '"' : '';
$item_output = $args->before;
// проверяем, на какой странице мы находимся
$current_url = (is_ssl()?'https://':'http://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$item_url = esc_attr( $item->url );
if ( $item_url != $current_url ) $item_output.= '<li><a'. $attributes .'>'.$item->title.'</a>';
else $item_output.= $item->title;
// заканчиваем вывод элемента
$item_output.= $args->after;
$output.= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
}
}
Выводит:
<div class="menu-menu-container"><ul id="menu-menu" class="menu">Страница</li>
<li><a href="ссылка">Страница</a></li>
Что собственно, тоже не то. Но уже лучше.
Скажите, как можно вывести простую конструкцию без всего лишнего. Просто:
<ul>
<li id="current"><a href="ссылка">Страница</a></li>
<li><a href="ссылка">Страница</a></li>
<li><a href="ссылка">Страница</a></li>
</ul>
Он все равно генерирует кучу лишнего, сколько я не пытался чего изменять. Документацию смотрел, но решения не нашёл.
Я не готов прокомментировать php код, что Вы привели. Но я готов порекомендовать решение с использованием wp_nav_menu, возможно, оно окажется для Вас полезным.
- Регистрируем меню в functions.php:
function register_my_menus() {
register_nav_menus(
array( 'header-menu' => ( 'Заглавное меню' )));
}
add_action( 'init', 'register_my_menus' );
- Выводим его в нужном месте:
wp_nav_menu( array(
'theme_location' => 'header-menu',
...
'menu_id' => 'nav',
...
)
);
- В консоли «Внешний вид» > «Меню» настраивается порядок, количество и пункты меню.
Что касается стилей, то оооочень странно, что не заработало. Возможно, не только этот кусок отвечает за формирование внешнего вида меню. Если есть ссылка и Вы ее дадите, я скажу как именно и где изменить стили.
Все равно, не так работает. В стилях вроде ничего больше не отвечает за меню. Ладно, меню — можно сказать статическая часть сайта, не так часто меняется — пропишу вручную в коде, как надо. Так будет проще всего 🙂
А я добил бы его до конца. Если есть функционал, то разобраться как он работает можно. Ссылку, я так понимаю, Вы не желаете публиковать или сайт локально?
А знаете, кажется всё ещё проще. Я хотел натянуть на WordPress статичный шаблон Jungleland. Т.к. всё локально, хотел вам дать на него ссылку, а оказалось, что он есть под WordPress уже 🙂
Надо было сразу погуглить 🙂 Всем спасибо!
Кстати говоря, те кто делал тему схитрили. Вот как они реализовали меню:
<div id="nav">
<ul>
<li<?php if ( is_home() or is_archive() or is_single() or is_paged() or is_search() or (function_exists('is_tag') and is_tag()) ) { echo ' class="current_page_item"'; } ?>><a href="<?php echo get_option('home'); ?>/">Home</a></li>
<?php wp_list_pages('title_li=&depth=1'); ?>
</ul>
</div>
Но честно говоря, я лучше скопирую у них нужный мне код. Что-то не нравится мне их реализация. Кнопку «Home» намертво зачем-то вставили.
Довольно распространённый метод, кстати. На мой взгляд, это жуткая жуть. Но чуть ли не в половине тем меню реализовано именно так.
Да, уж. Точно жуть. Поэтому, проще самому мне кажется, сделать WordPress шаблон какой надо из готового сверстанного макета в html.