Вот мое рабочее решение ...
Удалите пользовательские поля «Цвета проекта» и «Имена проектов» из пользовательского шаблона, (зарегистрируйтесь), зарегистрируйте пользовательскую таксономию под названием «Классы проекта» и назначьте вновь зарегистрированную таксономию пользовательскому типу публикации, см. здесь . В интерфейсе Wordpress присвойте каждому пользовательскому сообщению соответствующие бананы, сорта «Project Class», яблоки и т. Д., Снова объясненные в приведенной выше ссылке.
Однако по-прежнему существует проблема с отображением цветового ключа для каждой записи пользовательской таксономии. Я повторно использовал имена классов проекта в качестве имен таблиц стилей, чтобы дать каждому названию стиля цвет фона. Однако настоящие имена классов проекта имеют заглавные буквы и пробелы, которые необходимо удалить, чтобы сделать их удобными для таблицы стилей.
Добавить функцию php rename_projects
в functions.php, которая изменяет пробелы и заглавные буквы в имени таксономии «Класс проекта» и делает его подходящим для имени в стиле css, я использовал ...
// Rename Projects custom field for css styles
function rename_projects($sProjectName) {
$sFind = ' ';
$sReplace = '-';
$sAmended = mb_strtolower(str_replace( $sFind, $sReplace, $sProjectName ));
return $sAmended;
}
Теперь вы можете использовать имена классов вашего проекта в качестве имен таблиц стилей.
Далее, в шаблоне вашей страницы отобразите вашу собственную таксономию, таким образом ...
<?php
$args=array(
'taxonomy' => 'projectclass',
'orderby' => 'name',
'order' => 'ASC'
);
$categories=get_categories($args);
foreach($categories as $category) {
$sColorName = rename_projects($category->name); // To lower case and replace spaces
echo '<div class="legend-color ' . $sColorName . '"></div> // Color style name
<div class="legend-project">' . $category->name . '</div>'; // Taxonomy name
}
?>
Так, например, теперь у $category->name
«Мой первый проект» есть соответствующее имя таблицы стилей my-first-project
, которое вы можете добавить в свою таблицу стилей и стиль. Обратите внимание, что в <div class="legend-color '
я добавляю имя стиля к существующему классу, чтобы результирующий класс был "legend-color my-first-project": т.е. два стиля. Класс с жестким кодом «legend-color» содержит все атрибуты стиля, кроме background-color, который находится в $sColorName
.
Работает нормально здесь.