Intereting Posts
Как вставить в очередь скрипт, который использует / вызывает другой скрипт с помощью include ('js / camera.js') " Как я могу создать функцию контроллера для иерархии шаблонов? Если таксономия показывает класс активных Ошибка записи в WordPress поддержка языков в пользовательской теме urdu Добавьте флажок, чтобы добавить экран в список, который добавляет класс в заголовок Вставка HTML для закрытия и открытия div в контурах WP_Query Последние записи заголовков, не работающих с Qtranslate wp_insert_post -> post_content, не показывающий wp_enqueue_script был вызван неправильно Зачем позволять переопределять важнейшие подключаемые функции wp_verify_nonce и wp_create_nonce? Плагин WordPress для планирования встреч Могу ли я оставить `if (! Defined …)` при определении констант плагина? Умные ссылки на управление документами между тремя запрошенными сайтами WordPress Как создать страницу плагина с XML?

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

Я написал пользовательский ходок, который я использую с 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>'; }