WordPress ( WordPress ):Я избавился от второй “домашней” страницы, но она недостаточно хороша
Вопрос
У меня есть сайт WordPress (2.6.2), на котором я установил домашнюю страницу на статическую страницу вместо обычной страницы сообщений.Идентификатор этой страницы равен 2, поэтому в шаблоне WordPress я изменил wp_list_pages
чтобы выглядеть вот так:
<?php wp_list_pages('exclude=2&title_li=&depth=1' ); ?>
это работает нормально, но теперь Домашняя страница не "загорается", когда она выбрана (потому что на самом деле выбран page_id 2, и она не отображается в меню).Есть ли какой-нибудь простой способ обойти это?
Если нет, то в общих чертах, каков трудный способ обойти это?Создаю свою собственную версию wp_list_pages
функция?
Спасибо!
Решение
Установка статической страницы в качестве главной страницы не выделяет ссылку на меню, которая лежит в основе вопроса.
Итак, вы могли бы настроить (взломать) функцию wp_list_pages на стороне сервера, но вот вариант на стороне клиента, если вы того пожелаете:
Используйте библиотеку jQuery (удобно, что она поставляется с WP 2.2+), вызовите:
wp_enqueue_script('jquery');
или загрузите свою собственную версию:
wp_enqueue_script( 'jquery', '/path/to/your/jquery.js', false, '1.2.1');
Теперь добавьте немного javascript в свой шаблон, что-то вроде:
if(window.location.href == 'http://www.example.com/'){ //checks for root path - "home" ('http://www.example.com/?p=7' or 'http://www.example.com/2008-10/7' will not match)
jQuery('#nav > ul > li > a:first').addClass('current_page_item');
}
В ответ: во-первых предполагается, что первая ссылка в вашем меню - это ссылка home / frontpage.Если это не так, выберите через значение href или position.Вот по положению:
~~~~~~~~~~~~~~~
jQuery(jQuery('#nav > ul > li > a')[3]).addClass('current_page_item'); //add 'current_page_item' css class so menu item highlighting occurs
Пример:
<div id="nav">
<ul>
<li> <a>Ссылка 0 </a> </li>
<li> <a>Ссылка 1 </a> </li>
<li> <a>Ссылка 2 </a> </li>
<li> <a>Ссылка 3 </a> </li>
<li> <a>Ссылка 4 </a> </li>
<li> <a>Ссылка 5 </a> </li>
</ul></div>
Предостережения:
- Проверьте фактическое название вашего идентификатора div меню (#навигация показано здесь)
- Вложенная структура меню ul / li (то есть более одного уровня) потребует дополнительного кода для правильного выбора a элемент.
- Если ссылки меню будут меняться, не используйте метод позиционного выделения, используйте другой хук, например, значение href ссылки на домашнюю / главную страницу.
- В если (окно.Расположение.href == 'http://www.example.com/') часть, возможно, должна быть регулярным выражением, если задействовано больше вариантов (https, несколько поддоменов и т.д.).
Другие советы
Вы можете установить статическую страницу в качестве главной страницы в меню Администрирование > Настройки > Панель чтения после входа в систему в качестве администратора.
Ручную запись Wordpress по этому вопросу можно найти здесь.