Когда в / (или “домой”) мое меню не получает класс текущего пункта меню

Я - новичок Wordpress, настраивающий тему, таким образом, я пытаюсь понять, как она работает. Я прочитал приблизительно 10 связанных сообщений в SE, но еще не получаю его. Моя проблема следующие:

header.php, кажется, генерирует меню с,

<?php wp_nav_menu(array('theme_location' => 'nav-menu','container'  => 'div', 'container_class' => 'menu' )); ?> 

В wp-администраторе я создал меню с

"Блог | о | контакт"

которые указывают на корень и две страницы: "/" | "о" | (очень стандартный) "контакт". Теперь, я хотел бы разработать меню в зависимости от "активной" страницы. Для "приблизительно" и "контакт" это кажется очень легким. Классы, сгенерированные для каждого пункта меню, включают текущий пункт меню. Однако, когда на домашней странице мое меню "блога" "литий" только получает классы

menu-item menu-item-type-custom menu-item-object-custom menu-item-47

и так не может быть разработан соответственно. Я считал некоторый материал о фильтрации, использовании функций, и т.д...., но не вполне понимаю это. Если бы я определяю функцию в functions.php, где я использовал бы его впоследствии.

Любое понимание и справка значительно ценятся,

2
20.01.2012, 12:38
4 ответа

Чтобы заставить это работать, необходимо перейти к администратору меню, и на страницах раздел нажимают вкладку, которая говорит, 'просматривают все'. Наверху списка специальная опция для Вашей домашней страницы, является ли это нормальным представлением блога или определенной страницей. Добавьте, что к меню и Вы хороши.

enter image description here

5
19.02.2020, 22:26
  • 1
    , я не могу полагать, что это было настолько просто. Спасибо за подсказку. –  Massagran 20.01.2012, 20:05

Меню может легко быть сгенерировано с помощью этого кода,

<ul>
                <li <?php if(is_home()) { ?> class="active" <?php } ?>><a href="<?php echo get_option('home'); ?>/">Home</a></li>
                <?php wp_list_pages('depth=1&sort_column=menu_order&title_li=' ); ?>
            </ul>

Функция раньше создавала список опубликованных страниц, wp_list_pages (), автоматически добавляла класс current_page_item к элементу списка, соответствующему странице, которую Вы просматриваете.

Просто необходимо добавить .current_page_item класс к style.css файлу:

/* Style the list element */
li.current_page_item{
background:#eee;
color:#777;
}

/* Style the link element */
li.current_page_item a{
text-decoration:underline;
}
0
19.02.2020, 22:26
  • 1
    , Он использует wp_nav_menu, не wp_list_pages –  markratledge 20.01.2012, 16:20
  • 2
    ответа, я понимаю тот код. спасибо за предложение. Однако я буду придерживаться wp_nav_menu, как это - где я запускаю с. –  Massagran 20.01.2012, 20:25

Это не очень симпатично (и мог быть улучшен путем динамичного взятия пункта меню ID с php), но можно сделать это:

     <?php if (is_front_page()) echo
       '<style type="text/css" title="text/css">.menu-item-14 a
         {your current_page_item style here}</style>'
    ;?>

Измените .menu_item-14 на класс текущей домашней страницы и измените current_menu_item на Ваш CSS, также.

Место, что оператор прямо после

<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'stylesheet_url' ); ?>" />

в header.php, таким образом, CSS загружается после листа основного стиля.

0
19.02.2020, 22:26
  • 1
    благодарит за предложение. это имеет смысл..., хотя это может быть сложная вещь найти, поддерживает ли кто-то код позже. –  Massagran 20.01.2012, 20:27

Странный, что Wordpress не берет ту страницу как текущую страницу. Но легкое решение - это (только CSS).

В Вашем style.css

.home .menu-item-47 {
   /* current-menu-item styles */
}
0
19.02.2020, 22:26
  • 1
    Привет Ограбьте. Я не вижу "домой" и "объект меню 47" как классы, связанные с "блогом". Скорее я только вижу, "пункт меню menu-item-type-custom menu-item-object-custom объект меню 47". Так, если я не пропускаю что-то, что я не думаю, что CSS предназначался бы для него. Решение Sanchothefat решает его все же. –  Massagran 20.01.2012, 20:10
  • 2
    Класс домой является классом тела для сенсационного (проверьте элемент тела), таким образом, .home .menu-item-47 представляет объект меню 47 на странице шрифта. Но так или иначе ответ Sanchothefat является действительно правильным :-) –  Rob Vermeer 20.01.2012, 20:13

Теги

Похожие вопросы