Пользовательские меню: проблема динамического выделения с пользовательской домашней ссылкой


В настоящее время я внедряю 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?

 1
Author: Chip Bennett, 2011-03-15

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-адресом, и если да, добавляет "пункт текущего меню". Затем вы можете стилизовать активные ссылки с помощью класса .стиль текущего меню.

 0
Author: Shaun, 2011-09-09 14:19:47

Лучшим подходом было бы добавить "Домашнюю" страницу в 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 вы увидите ссылку на "Домашнюю" страницу в метабоксе "Страницы". Выберите его и добавьте в свое пользовательское меню.

Кредит и скриншоты здесь.

 0
Author: Chip Bennett, 2011-09-09 18:50:00

В своих темах я использую пользовательские меню. В качестве резервного меню я использую следующий код в своем 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>';

Этот код решает мою проблему с установкой текущего элемента в домашней ссылке. Я надеюсь, что это поможет вам.

 -1
Author: Arnold, 2011-03-15 16:39:56