Intereting Posts
Как я могу разрешить ошибку внутреннего сервера .htaccess, устанавливая многопользовательский WordPress? Разница между иерархической и неиерархической таксономией? Слайдер слайдов с ограниченным количеством элементов на слайд такое же расширение меню в меню wordpress В любом случае для get_next_post () использовать фактический заказ после заказа публикации? Внутренняя ошибка сервера apache Как я могу отображать пользовательские столбцы пользовательского столбца и его содержимое в виджетах панели мониторинга? Изменение постоянной ссылки WordPress Изменить регистрацию пользователя Показать регистрационную форму после проверки WooCommerce после ошибки Как я могу выполнить вывод пользовательских полей с помощью HTML Как однозначно идентифицировать запросы? добавьте <div> в конец сообщения в цикле с плагином Родитель для другого настраиваемого типа сообщений – файлы шаблонов не распознаются как создать короткие кодовые слова?

Увеличение класса в пользовательском ходоке

Я написал пользовательский ходок, который я использую с wp_nav_menu но мне нужно выполнить итерацию через 4 пользовательских класса, и я не уверен, как это сделать. В принципе, каждому элементу меню <li> должен быть задан класс color1 , color1 , color3 или color4 , циклический color1 к color1 , color1 , полоскание, повторение в этом порядке.

Обычно я делал это с помощью $i и $i++ , но как это сделать в классе Walker?

EDIT: Код моего Уолкера:

 class Salamander_Advent_Walker extends Walker_page { function start_el(&$output, $item, $depth, $args) { if ( $depth ) { $indent = str_repeat("\t", $depth); } else { $indent = ''; } $advent_thumbnail = get_post_meta($item->ID, 'advent-thumb', true); $advent_slug = get_post_meta($item->ID, 'advent-slug', true); $advent_oneliner = get_post_meta($item->ID, 'advent-oneliner', true); //$description = get_post_meta($item->ID, 'advent-thumb', true); $output .= $indent . ' <li class="active color4"> <a href="#day'. $advent_slug .'"> <span class="day"> <strong>'. $advent_slug .'</strong> <span>&nbsp;</span> </span> <span class="content"> <small>'. $advent_slug .'</small> <img src='. $advent_thumbnail .' width="126" height="91" alt="advent" /> <strong>'. $advent_oneliner .'</strong> </span> </a>'; } 

}

Solutions Collecting From Web of "Увеличение класса в пользовательском ходоке"

Используйте переменную класса, чтобы сохранить «индекс» цвета, который вы хотите отобразить. Увеличивайте каждый раз, когда он используется, и проверяйте, перейдет ли он, и в этом случае установите его на 1.

 class Salamander_Advent_Walker extends Walker_page { private $color_idx = 1; function start_el(&$output, $item, $depth, $args) { if ( $depth ) { $indent = str_repeat("\t", $depth); } else { $indent = ''; } $advent_thumbnail = get_post_meta($item->ID, 'advent-thumb', true); $advent_slug = get_post_meta($item->ID, 'advent-slug', true); $advent_oneliner = get_post_meta($item->ID, 'advent-oneliner', true); //$description = get_post_meta($item->ID, 'advent-thumb', true); $output .= $indent . ' <li class="active color'.$this->color_idx.'"> <a href="#day'. $advent_slug .'"> <span class="day"> <strong>'. $advent_slug .'</strong> <span>&nbsp;</span> </span> <span class="content"> <small>'. $advent_slug .'</small> <img src='. $advent_thumbnail .' width="126" height="91" alt="advent" /> <strong>'. $advent_oneliner .'</strong> </span> </a>'; $this->color_idx++; if ($this->color_idx > 4) { $this->color_idx = 1 } } } 

Создайте отдельную функцию:

 function alternate() { static $i = 0; $args = func_get_args(); return $args[ $i++ % func_num_args() ]; } 

В вашем ходоке используйте его вот так:

 $class = 'color' . alternate( 1, 2, 3, 4 ); // somewhere in your output string: $output .= '<li class="active ' . $class . '">'; 

Это можно сделать, установив приращающийся номер в глобальную переменную.

 function start_el(&$output, $item, $depth, $args) { //globalize the variable global $ac_color_num; //check if it is set, or if it is 4 (to reset to 1) if ( !isset($ac_color_num) || $ac_color_num == 4 ) { $ac_color_num = 1; } $ac_color_num++ if ( $depth ) { $indent = str_repeat("\t", $depth); } else { $indent = ''; } $advent_thumbnail = get_post_meta($item->ID, 'advent-thumb', true); $advent_slug = get_post_meta($item->ID, 'advent-slug', true); $advent_oneliner = get_post_meta($item->ID, 'advent-oneliner', true); //$description = get_post_meta($item->ID, 'advent-thumb', true); //use $ac_color_num in the output. $output .= $indent . ' <li class="active color' . $ac_color_num . '"> <a href="#day'. $advent_slug .'"> <span class="day"> <strong>'. $advent_slug .'</strong> <span>&nbsp;</span> </span> <span class="content"> <small>'. $advent_slug .'</small> <img src='. $advent_thumbnail .' width="126" height="91" alt="advent" /> <strong>'. $advent_oneliner .'</strong> </span> </a>'; }