WordPress Custom Walker создает двойное меню
Здравствуйте! У меня есть пользовательский ходок, настроенный для моей темы WordPress для отображения моего главного меню. Я начал настраивать его около месяца назад, но с тех пор работал над некоторыми другими моментами. Возвращаясь к этому, я немного растерялся относительно того, где я был, когда я остановился.
Единственная реальная проблема, которую я вижу на данный момент, состоит в том, что ходок генерирует двойное меню. Таким образом, каждая ссылка отображается дважды.
У кого-нибудь есть идеи, почему пункты меню появляются дважды?
Вот пользовательский ходок:
class Custom_Walker_Nav_Menu extends Walker_Nav_Menu {
function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0) {
if ( $depth )
$indent = str_repeat("\t", $depth);
else
$indent = '';
extract($args, EXTR_SKIP);
$linkName = apply_filters( 'the_title', $item->post_title, $page->ID );
if($linkName=="HOME"){
$output .= $indent . '<li id="item_'.$item->ID.'"><a href="#" class="all" data-filter=".all">'.$linkName.'</a>';
}else{
$output .= $indent . '<li id="item_'.$item->ID.'"><a href="#" class="'.strtolower($linkName).'" data-filter=".'.strtolower($linkName).'">'.$linkName.'</a>';
}
if($linkName=="CONTACT"){
$output .= $indent . '<li id="item_'.$item->ID.'"><a href="/contact" class="contact" data-filter=".all">'.$linkName.'</a>';
}else{
$output .= $indent . '<li id="item_'.$item->ID.'"><a href="#" class="'.strtolower($linkName).'" data-filter=".'.strtolower($linkName).'">'.$linkName.'</a>';
}
}
function end_el(&$output, $page, $depth = 0, $args = array()) {
$output .= "</li>\n";
}
}
Спасибо
1 ответ
Решение
Это потому, что вы не научились использовать цикл if. У вас есть два, следовательно, две ссылки будут выведены. Вы хотите, чтобы выводился только 1, поэтому:
if($linkName=="HOME"){
$output .= $indent . '<li id="item_'.$item->ID.'"><a href="#" class="all" data-filter=".all">'.$linkName.'</a>';
} elseif($linkName=="CONTACT"){
$output .= $indent . '<li id="item_'.$item->ID.'"><a href="/contact" class="contact" data-filter=".all">'.$linkName.'</a>';
}else{
$output .= $indent . '<li id="item_'.$item->ID.'"><a href="#" class="'.strtolower($linkName).'" data-filter=".'.strtolower($linkName).'">'.$linkName.'</a>';
}