декабря 04, 2007

Решение проблемы wp_list_pages в Wordpress

Подсветка меню, page_item, current_page_item, классы CSS

Замечательный движок для блогов Wordpress, кроме всевозможных достоинств, как и любой другой программный продукт не лишен багов. Но сила программ с открытым кодом состоит в том, что пользователи сами могут вносить усовершенствования и исправления. Об устранении глюка с выводом меню сайта при помощи функции wp_list_pages () и пойдет речь.

Проблема

При выводе списка страниц функция wp_list_pages добавляет класс page_item. Для текущей выбранной страницы также дописывается класс current_page_item. Это позволяет создавать красивые эффекты подсвечивания текущей страницы в меню. Все это отлично работает до тех пор, пока вы не захотите заменить блог на главной странице на статическую страницу (меню Настройки -> Чтение). В этом случае блог будет отображаться на выбранной вами странице и функция wp_list_pages ...прекращает выдавать класс current_page_item для пункта меню "блог". При этом вся ваша красивая система подсветки рушится.

Меню можно сделать и вручную. Но зачем же тогда стандартная функция, которая выполняет все нужные действия автоматически? Этот баг описан на страницах техподдержки вордпресса и был исправлен в версии 2.1. Но снова появился в версии 2.1.1 и до сих пор вопрос остается открытым.

Решение

В ворпрессовской директории wp-includes подправим файл classes.php. В районе 512-й строки (у меня это 516-я строка - версия 2.3.1) находим if ( $page->ID == $current_page ) и заменяем всю строку на if ($page->ID == $current_page || ($current_page == 0 && $page->ID == get_settings('page_for_posts')))

Вот и все.

Technorati Теги: ,,

Комментариев нет:

Отправить комментарий

Комментирование запрещено.

Примечание. Отправлять комментарии могут только участники этого блога.