Выделите элемент списка, когда я просматриваю саму страницу

Я видел несколько уроков по этой проблеме, но ни один из них не удовлетворил меня. Я хочу выделить единственный элемент моего списка, который соответствует странице, которую я просматриваю. Я создал код с помощью php, это веб-сайт, основанный на WordPress, и код на самом деле работает, потому что когда я отображаю URI, на котором я нахожусь, он отображает правильный URI, но оператор if, который я создал, чтобы добавить класс, когда я на сайте ничего не выводится .. и я не понимаю почему .. в любом случае .. вот код:

header.php

<ul class="nav nav-pills sliding" id="Jcollapse">
<li class="<?php if ($current == "/why-chickapea/"){ echo "current";}?>"><a href="/why-chickapea/"><span>Why Chickapea?</span></a></li>
<li class="<?php if ($current == "/our-pasta/"){ echo "current";}?>"><a href="/our-story/"><span>Our story</span></a></li>
<li class="<?php if ($current == "/shop-chickapea/"){ echo "current";}?>"><a href="/shop-chickapea/"><span>Shop</span></a></li>
<li class="<?php if ($current == "/recipes/"){ echo "current";}?>"><a href="/recipes/"><span>Recipes</span></a></li>
<li class="<?php if ($current == "/blog/"){ echo "current";}?>"><a href="/blog/"><span>Blog</span></a></li>
</ul>

На каждой странице я добавил фрагмент php:

<?php $current = $_SERVER["REQUEST_URI"]; ?>

Если я повторю переменную $ current, я получу правильный URL в следующем формате: / pagename /

В конце я оформляю ток класса желтым цветом.

.current {
color:yellow;
}
.current a {
color:yellow;
}

Кто-нибудь знает, где моя ошибка?

это страница сайта: choosechickapea.com

Как вы можете видеть, класс, который сгенерирует мой код, пуст, но если я отобразлю каждое значение, то полученное URI будет правильным

0

Решение

Простейшим объяснением будет то, что вы печатаете заголовок до установки $ current.

Второе простейшее объяснение — это разные области, то есть либо вы устанавливаете $ current в неглобальной области, либо читаете ее в неглобальной области, и эти две (какими бы они ни были) разные. Так как кто-то сказал WordPress, я предполагаю, что есть некоторая инкапсуляция в функции (таким образом изменяя область видимости). С использованием global ключевое слово может быть решение, но грязное. Но так как вы уже избегаете WordPress функций …

1

Другие решения

Фактический код:

Прежде чем объявлять в заголовке оператор if, установите значение переменной. Если вы объявите в теле, даже перед загрузкой заголовка с помощью, например, требуется один раз или в WordPress:

 <?php get_header(); ?>

Это не будет работать, переменная должна быть установлена ​​в заголовке так:

<?php $current = $_SERVER["REQUEST_URI"]; ?>
<header class="navbar-fixed-top">

<ul class="nav nav-pills sliding">
<li class="<?php if ($current == "/your-url/"){ echo "current";}?>"><a href="/your-url/"><span>your url</span></a></li>
<li class="<?php if ($current == "/other-url/"){ echo "current";}?>"><a href="/other-url/"><span>/other url/</span></a></li>
</ul>
</header>
0

По вопросам рекламы [email protected]