2013-11-07 3 views
0

У меня есть сайт Wordpress, состоящий в основном из страниц, но есть одна страница (раздел новостей), которая содержит сообщения и категории, подобные блогу. Я создаю свой навигатор, используя wp_nav_menu(), и отображаются только страницы верхнего уровня. У меня есть стили для текущей ссылки и родителя текущей ссылки, которые используют классы .current-menu-item и .current-page-ancestor, которые автоматически добавляет wp_nav_menu().Добавление «активного» класса в wp_nav_menu при просмотре сообщения

Однако, когда вы просматриваете сообщение в разделе новостей, на навигацию не добавляются классы, чтобы указать, что вы находитесь в этом разделе, и нет способа подстроить ссылку «новости», чтобы показать, что это раздел сайта, в котором находится пользователь.

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

ответ

0

Согласно Wordpress template hierarchy (и, в частности this diagram) один пост, отображаемый с помощью файла под названием single.php (или single-<post_type>.php. Набор сообщений из категории будут отображаться category-<post_type>.php файла шаблона.

Теперь, если вы придерживайтесь этой иерархии, у вас будет еще два шаблона - список новостей и подробная страница новостей. Наличие двух страниц с этими шаблонами сделает их автоматически перечисленными в функции создания меню Wordpress.

Если этого недостаточно для вас, должен использовать WP_Query, чтобы вручную перечислять ваши страницы. Если вы решите сделать i Таким образом, один или два утверждения должны выполнять эту работу.

+0

У меня есть шаблон single.php. Мне не нужны индивидуальные шаблоны категорий, поскольку категории используются исключительно для внутренних организационных целей. У меня есть куча статических страниц, каждый со своим собственным шаблоном. Одним из них является news.php, в котором есть цикл, чтобы просматривать сообщения и отображать их. Я хочу, чтобы «новости» отображались на навигаторе при просмотре одного сообщения. – user2966473

+0

Может ли эхо ваш навигатор использовать WP_Query? Это самое простое решение, которое я вижу. –

1

У вас есть страница «Новости», установленная в качестве страницы вашего блога, в настройках «Чтение»? Если это так, он должен добавить класс «current-menu-parent» и «current-post-parent» в «Новости» <li>, когда вы просматриваете сообщение.

+0

Когда я это сделал, News прекратил использование news.php в качестве своего шаблона и начал использовать home.php, который был моим шаблоном для главной страницы. Я понятия не имею, почему это произошло, но это так, если я не установлю «Ваши последние сообщения» в «Параметры чтения». – user2966473

+0

Он будет использовать 'index.php' в качестве шаблона. –

+0

Если вы не хотите менять шаблон 'index.php', вы должны иметь возможность использовать пункт меню новостей с помощью CSS. Тело страницы должно иметь класс '.single' для записей новостей, и каждое меню' li' будет иметь уникальный идентификатор. Это было бы примерно так: '.single # menu-item-58 {// CSS HERE}'. –

Смежные вопросы