Здравствуйте не откажите в помощи подскажите пожалуйста!
Данная функция не выводит класс пункта менюPHP код:который вводится в настройках меню вордпрессаclass Menu_Description extends Walker_Nav_Menu {
function start_el(&$output, $item, $depth, $args) {
global $wp_query;
$class_names = ( $item->current == 1 ) ? 'class="current-menu-item"' : '';
$output .= $indent . '<li itemprop="name" '. $class_names .'>';
$attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : '';
$attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : '';
$attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) .'"' : '';
$attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : '';
$item_output = $args->before;
$item_output .= '<a itemprop="url"'. $attributes .'>';
$item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
$item_output .= '<br /><span class="sub">' . $item->description . '</span>';
$item_output .= '</a>';
$item_output .= $args->after;
if( $item->current == 1 ) {// Удаляем из активного пункта меню циклическую ссылку
$item_output = $args->before;
$item_output .= '<span class="nolinks">';
$item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID );
$item_output .= '<br /><span class="sub">' . $item->description . '</span>';
$item_output .= '</span>';
$item_output .= $args->after;}
$output .= apply_filters('walker_nav_menu_start_el', $item_output, $item, $depth, $args );}}
все остальные параметры вводятся: Атрибут title, Отношение к ссылке (XFN),Открывать в новой вкладке За них отвечает коде в функцииPHP код:Подскажите пожалуйста что поправить в коде чтобы вводился класс для пункта меню?$attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : '';
$attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : '';
$attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) .'"' : '';
$attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : '';
- 21.07.2017 20:49
- 29.07.2017 11:38Новичок

- Регистрация: 01.07.2016
- Сообщений: 8
- Репутация: 1
Здравствуйте, на вас последняя надежда)
Я использую версию woocomerce 3.1.1 Подскажите пожалуйста, как вывести минимальную цену для вариативного товара.
Изначально в woocommerce реализованы отзывы в виде
Имя, почта, сайт, рейтинг - это стандарт
Есть ли плагин, который позволит сократить до имя, телефон, рейтинг
+ добавить капчу и чек бокс с согласием на обработку персональных данных
Можно и платное решение - 13.08.2017 20:45Новичок

- Регистрация: 14.05.2016
- Сообщений: 23
- Репутация: 0
Всем привет,
Понадобилось поменять сетку товаров в категории на список. Плагины типа вывод списком не работают. Хотелось бы просто в теме сделать изменения, это же изначально стандартная функция в вукомерс, то есть нужно пофиксить часть настроек самой темы.
Кто готов помочь либо сделать, пишите лс - 25.08.2017 23:36
Fktrctq, $item->classes это массив со всеми классами пункта
При такой настройке: http://my.jetscreenshot.com/11773/20...-movx-35kb.jpg
Получаем такой массив: http://my.jetscreenshot.com/11773/20...-lmzd-21kb.jpg
Обычно, выводится так: echo implode(' ', $item->classes);
Класс current-menu-item и так добавляется, если мы находимся на этой странице.
Поэтому меняйте строку:
PHP код:на:$class_names = ( $item->current == 1 ) ? 'class="current-menu-item"' : '';
PHP код:$class_names = 'class="' . implode(' ', $item->classes) . '"';
Спасибо сказали:
Fktrctq(26.08.2017), - 26.08.2017 10:13
nikolay1519,Оптимизирую шаблон путем сокращения html кода. Строка
PHP код:не выводит в каждый пунк меню кучу стандартных классов, а выводит только для активного пункта меню один единственный класс class="current-menu-item" Но в этом случае нет возможности добавить свой класс (то что описывал выше)$class_names = ( $item->current == 1 ) ? 'class="current-menu-item"' : '';
nikolay1519 Не откажите в помощи, подскажите пожалуйста можно ли в эту строчкуPHP код:добавить$class_names = ( $item->current == 1 ) ? 'class="current-menu-item"' : '';
PHP код:чтобы в результате отсутствовали в коде стандартные классы и в тоже время можно было задать свой?implode(' ', $item->classes);
- 28.08.2017 15:59
Fktrctq, можно, но это лишние затраты времени\памяти, пусть и незначительные. Для этого достаточно отфильтровать $item->classes.
Самый простой вариант, это когда у вас будет один класс (http://my.jetscreenshot.com/11773/20...-oiyt-38kb.jpg), то он всегда будет первым элементом в массиве (если не настроено, первый элемент будет пустым) - http://my.jetscreenshot.com/11773/20...-v52v-52kb.jpg.
PHP код:Если через пробел указано несколько классов, каждый класс будет отдельным элементом, тут немного сложнее.$classes = array();
// Если первый элемент не пустой
if ($item->classes[0] != false) $classes[] = $item->classes[0];
// Если мы находимся в текущем пункте меню
if ($item->current == 1) $classes[] = 'current-menu-item';
$class_names = 'class="' . implode(' ', $classes) . '"';
PHP код:$classes = array();
// Проходимся по всем классам
foreach ($item->classes as $class) {
// Если название класса не пусто и начинается на menu-item (у всех стандартных классов так, кроме current-menu-item)
if (!preg_match('#^menu-item#i', $class) && $class != false) $classes[] = $class;
}
$class_names = 'class="' . implode(' ', $classes) . '"';
Последний раз редактировалось nikolay1519; 28.08.2017 в 16:04.
Спасибо сказали:
Fktrctq(28.08.2017), - 28.08.2017 23:26
nikolay1519, а есть возможность от пустых классов избавиться ? В коде страницы у каждого пункта меню class=""
- 29.08.2017 13:34
Fktrctq, ну это уже вообще просто
PHP код:if ($classes != false) {
$class_names = 'class="' . implode(' ', $classes) . '"';
} else {
$class_names = '';
}
Спасибо сказали:
Fktrctq(29.08.2017), - 31.08.2017 12:23Новичок

- Регистрация: 18.12.2012
- Сообщений: 1
- Репутация: 0
Подскажите пожалуйста, как выводить описание тега в шаблоне страницы с материалами тега?
При добавлении кода вызова описания <?php $description = tag_description (); echo $description;?> в шаблон archive.php , куда не вставляй код, описание выводится сверху или снизу всего шаблона контента (включая боковые слайдбары), при этом во всю ширину экрана, что естественно не приемлемо.
Возможно какой то плагин решает эту проблему? - 01.09.2017 01:58
Спасибо сказали:
FeaKyS(14.10.2017),
Тэги топика:
Похожие темы
| Темы | Раздел | Ответов | Последний пост |
|---|---|---|---|
Бесплатная помощь по ucoz сайтам | Создание сайтов | 6 | 31.03.2013 14:25 |
Нужна не бесплатная помощь в заполнении сайта | Копирайтинг, переводы, постинг | 4 | 22.12.2012 00:33 |
Бесплатная помощь в установке вики-разметки вконтакте | Услуги по SMM, SMO | 4 | 01.02.2012 02:38 |
Бесплатная помощь в установке вики-разметки вконтакте | Социальные сети | 1 | 27.01.2012 16:44 |
Нужна помощь (WordPress) | Web программирование | 9 | 04.01.2012 14:00 |




