我正在一个Wordpress网站上工作,该网站显示存储在自定义帖子类型中的许多项目 . 每个自定义帖子包括两个自定义字段(以及其他)“项目名称”和“项目颜色” . 可能有几个关于特定“项目名称”的自定义帖子 .
我想创建所有项目的图例(一个键),列出从上面的自定义字段值中获取的“项目名称”和“项目颜色” .
例如,我有3个名为“Bananas”的项目,其颜色为“Yellow”,6个名为“Oranges”,颜色为“orange”,4个名为“Apples”,颜色为“green” . 我的传奇(关键)应该显示一个黄色的香蕉,一个橙色的橙色和一个绿色的苹果 .
当然,如果我使用它,它会显示3个香蕉,6个橙子和4个苹果 . 如何只显示项目名称和项目颜色列表?
我查看了三种方法,一种自定义分类法,检查数组中的重复项,并使用GROUP BY作为 posts_groupby
上的过滤器 .
GROUP BY
似乎是正确的方法,但我无法做任何事情 . 我得到的最远的是把它放在我的functions.php中......
function sort_legend ( $groupby ) {
global $wpdb;
$groupby .= "{$wpdb->postmeta}.meta_key = 'Color' ";
return $groupby;
}
...并将其作为我的Query对象的过滤器应用...
<?php add_filter('posts_groupby', 'sort_legend'); ?>
<?php if ( $myQuery->have_posts() ) while ($myQuery->have_posts() ) : $myQuery->the_post(); ?>
<?php remove_filter('posts_groupby', 'sort_legend'); ?>
...但我还有多个条目 .
1 回答
这是我的工作解决方案......
从自定义模板中删除'Project Colors'和'Project Names'自定义字段(叹气),注册名为'Project Classes'的自定义分类法,并将新注册的分类法分配给自定义帖子类型,请参阅here . 在Wordpress界面中,为每个自定义帖子提供相应的'Project Class'香蕉,苹果等,再次在上面的链接中解释 .
但是,仍然存在如何为每个自定义分类条目显示颜色键的问题 . 我重复使用Project Class名称作为样式表名称,因此我可以为每个样式名称指定背景颜色 . 但是,真正的Project Class名称需要删除大写字母和空格,以使它们对样式表友好 .
在functions.php中添加一个php函数
rename_projects
,它修改了'Project Class'分类法名称中的空格和大写字母,并使其适合于css样式名称,我用...现在,您可以将项目类名称用作样式表名称 .
接下来,在您的页面模板中显示您的自定义分类,从而......
所以现在例如
$category->name
"My First Project"有一个相应的样式表名称my-first-project
,您可以将其添加到样式表和样式中 . 请注意,在<div class="legend-color '
中,我将样式名称添加到现有类中,因此生成的类将为"legend-color my-first-project":即两个样式 . 硬编码类"legend-color"包含除$sColorName
中背景颜色之外的所有样式属性 .在这里工作正常 .