В настоящее время у меня есть сайт с жестко заданным списком категорий и подкатегорий, где каждый элемент имеет следующий формат:
<li class="cat-item open-access"><a href="/categories/open-access/">Open Access</a></li>
Важно, что каждому элементу <li>
присваивается класс, соответствующий элементу категории, к которой он относится.
Я бы, очевидно, хотел бы использовать Wordpress 'wp_list_categories()
для вывода списка вместо его жесткого кодирования, но мне нужно сохранить пользовательский класс для каждого элемента <li>
.
Я искал фильтры и действия и подумал, что мог бы придумать исправление, добавив его в файл functions.php
моей темы:
function add_class_from_slug($wp_list_categories) {
$pattern = '/class=\"/';
$replacement = 'class="'.$category->slug.' ';
$newclass = preg_replace($pattern, $replacement, $wp_list_categories);
return $newclass;
}
add_filter('wp_list_categories','add_class_from_slug');
Но это не работает - текст, возвращаемый $category->slug
, выпадает при визуализации страницы. Если я добавлю статический текст (используя строку типа $replacement = 'class="myclass ';
, он будет хорошо выглядеть.
К сожалению, я могу получить желаемый результат, добавив $class .= ' '.$category->slug;
в нужном месте wp-includes/classes.php
, но не стоит прибегать к этому.
Почему я не могу просто использовать $category->slug
в своей функции? Обходные пути, предложения, дальнейшее чтение по теме? Должен добавить, что у меня довольно простое владение PHP. Спасибо!