Пользовательские меню: проблема динамического выделения с пользовательской домашней ссылкой
В настоящее время я внедряю wp_nav_menu - все прошло хорошо, за исключением динамического выделения. Код меню выглядит следующим образом (когда выбрана главная страница, которая является пользовательской ссылкой):
<div class="menu-header">
<ul class="menu" id="menu-main-nav">
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-126" id="menu-item-126"><a href="path.to.link">Home</a></li>
<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-122" id="menu-item-122"><a href="path.to.link">Information</a></li>
<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-123" id="menu-item-123"><a href="path.to.link">Contact</a></li>
<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-124" id="menu-item-124"><a href="path.to.link">About</a></li>
</ul>
</div>
Когда выбрана страница, отличная от домашней (которая является "пользовательской ссылкой"), это записывается:
<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-65 current_page_item menu-item-122" id="menu-item-122"><a href="path.to.link">Information</a></li>
Как вы можете видеть, это включает в себя активный стиль "текущий пункт меню", где пользовательская ссылка записывает только "тип элемента меню -пользовательский элемент меню-объект-пользовательский"
Итак, мой вопрос есть ли способ добавить выбранный стиль элемента для пользовательских ссылок в меню wp3?
3 answers
Я добился этого с помощью некоторого jQuery:
$("#sidebar ul li").each(function () {
if ($(this).find("a").attr("href") == window.location.href) {
$(this).addClass("current-menu-item");
}
});
(Моя навигация находится в div с идентификатором "боковая панель", вам нужно будет изменить первый селектор).
Он проверяет, совпадает ли href ссылок с текущим URL-адресом, и если да, добавляет "пункт текущего меню". Затем вы можете стилизовать активные ссылки с помощью класса .стиль текущего меню.
Лучшим подходом было бы добавить "Домашнюю" страницу в wp_page_menu()
аргументы, чтобы вы могли добавить ссылку на "домашнюю" страницу.
Сначала добавьте этот фильтр в functions.php
, чтобы показать домашнюю ссылку:
function mytheme_filter_page_menu_args( $args ) {
$args['show_home'] = true;
return $args;
}
add_filter( 'wp_page_menu_args', 'mytheme_filter_page_menu_args' );
Теперь в Dashboard -> Appearance -> Menus
вы увидите ссылку на "Домашнюю" страницу в метабоксе "Страницы". Выберите его и добавьте в свое пользовательское меню.
В своих темах я использую пользовательские меню. В качестве резервного меню я использую следующий код в своем functions.php :
function tweaker3_default_menu() {
echo '<ul class="sf-menu">';
if(is_home() && !is_paged()) {
echo '<li class="current_page_item"><a href="'. home_url( '/' ) . '" title="' . __( 'You are Home', 'tweaker3' ) . '" rel="nofollow">' . __( 'Home', 'tweaker3' ) . '</a></li>';
} else {
echo '<li><a href="'. home_url( '/' ) . '" title="' . __( 'Click for Home', 'tweaker3' ) . '" rel="nofollow">' . __( 'Home', 'tweaker3' ) . '</a></li>';
}
wp_list_pages( 'title_li=' );
echo '</ul>';
Этот код решает мою проблему с установкой текущего элемента в домашней ссылке. Я надеюсь, что это поможет вам.