Intereting Posts
С двумя настраиваемыми типами сообщений, как сделать одного ребенка другого в меню администратора? Как передать идентификатор сообщения на URL-адрес страницы? позволить пользователям добавлять несколько разделов на статическую страницу Исправить проблему с Textdomain Translation Как вы редактируете html отрывков тизера Как добавить шаблоны страниц в категории Пользовательские типы сообщений, работающие в functions.php, но не в плагине Ajax (jquery) wp_query pagination возвращает -1 WP OAuth Server «Тип гранта не указан в запросе» Изменение класса списка страниц Название моей страницы превращается в тег h2 – Что делать? Пользовательская категория типа сообщения, не отображаемая в пользовательском типе сообщения Как заменить комментарии по умолчанию на пользовательский HTML? Условно загружает JavaScript / CSS для коротких кодов Передача переменной во вложенных коротких кодах

Получение ошибки stripos при попытке добавить классы меню

Я использую настраиваемую тему, которая делает что-то, что блокирует пользовательские классы меню (дополнительные, которые вы можете вводить из панели меню) для печати в HTML.

  1. Я нашел в коде, где они добавляют классы в тег li . Поэтому я попытался добавить эту строку кода:

$li->addClass($classes);

Будет ли это правильным кодом для использования, чтобы вытащить поле класса из панели меню? Если так..

Я сделал это, и я получил эту ошибку:

Warning: stripos() [function.stripos]: needle is not a string or an integer in file-path/file.php on line 397

Вот этот блок кода: (я заметил, что над линией ссылка alertS)

 protected static function attrClass($action, DOMNode $node, $class) { $classes = $node->getAttribute('class'); /* error found in line below */ $found = stripos($classes, $class) !== false && in_array(strtolower($class), explode(' ', strtolower($classes))); if ($action == 'has') { return $found; } if ($action == 'toggle') { $action = $found ? 'remove' : 'add'; } if ($action == 'add' && !$found) { $node->setAttribute('class', trim(preg_replace('/\s{2,}/i', ' ', $classes.' '.$class))); } if ($action == 'remove' && $found) { $classes = trim(preg_replace('/\s{2,}/i', ' ', preg_replace('/(^|\s)'.preg_quote($class, '/').'(?:\s|$)/i', ' ', $classes))); if ($classes !== '') { $node->setAttribute('class', $classes); } else { $node->removeAttribute('class'); } } return $node; } 

Я не уверен, что происходит не так, и что мне нужно сделать дальше, чтобы получить функцию пользовательского класса меню.

Примечание: все еще изучая wordpress / php, поэтому, если мне не хватает какой-либо информации, мне жаль, и я отправлю ее, если вы спросите. Попытка быть как можно более тщательной!

-edit- Вот блок кода, в котором я пытался добавить $li->addClass($classes); (Я заметил перед этим еще раз)

 class WarpMenuDefault extends WarpMenu { /* Function: process Returns: Object */ public function process($module, $element) { self::_process($module, $element->first('ul:first')); return $element; } /* Function: _process Returns: Void */ protected static function _process($module, $element, $level = 0) { if ($level == 0) { $element->attr('class', 'menu '.$module->menu_style); } else { $element->addClass('level'.($level + 1)); } foreach ($element->children('li') as $li) { // is active ? if ($active = $li->attr('data-menu-active')) { $active = $active == 2 ? ' active current' : ' active'; } // is parent ? $ul = $li->children('ul'); $parent = $ul->length ? ' parent' : null; // set class in li $li->attr('class', sprintf('level%d item%s'.$parent.$active, $level + 1, $li->attr('data-id'),$class)); /* Here's the line I added*/ $li->addClass($classes); // set class in a/span foreach ($li->children('a,span') as $child) { // get title $title = $child->first('span:first'); // set subtile $subtitle = $title ? explode('||', $title->text()) : array(); if (count($subtitle) == 2) { $li->addClass('hassubtitle'); $title->html(sprintf('<span class="title">%s</span><span class="subtitle">%s</span>', trim($subtitle[0]), trim($subtitle[1]))); } // set image if ($image = $li->attr('data-menu-image')) { $title->prepend(sprintf('<span class="icon" style="background-image: url(\'%s\');"> </span>', $image)); } $child->addClass(sprintf('level%d'.$parent.$active, $level + 1)); } // process submenu if ($ul->length) { self::_process($module, $ul->item(0), $level + 1); } } } 

}

Solutions Collecting From Web of "Получение ошибки stripos при попытке добавить классы меню"