Я видел несколько уроков по этой проблеме, но ни один из них не удовлетворил меня. Я хочу выделить единственный элемент моего списка, который соответствует странице, которую я просматриваю. Я создал код с помощью 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 будет правильным
Простейшим объяснением будет то, что вы печатаете заголовок до установки $ current.
Второе простейшее объяснение — это разные области, то есть либо вы устанавливаете $ current в неглобальной области, либо читаете ее в неглобальной области, и эти две (какими бы они ни были) разные. Так как кто-то сказал WordPress, я предполагаю, что есть некоторая инкапсуляция в функции (таким образом изменяя область видимости). С использованием global
ключевое слово может быть решение, но грязное. Но так как вы уже избегаете WordPress функций …
Фактический код:
Прежде чем объявлять в заголовке оператор 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>