我正在使用ACF,我在分类页面the_field('marker)
中有一个颜色选择器字段project-cat
,让客户为每个类别选择颜色。我也希望显示相关帖子的每个类别颜色。
此代码显示了我如何显示每个类别的颜色:
<?php
$terms = get_terms( 'project-cat' );
// var_dump($terms);
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
foreach ( $terms as $term ) {
?>
<li>
<input id="category_<?php echo $term->term_id; ?>" type="checkbox" name="categories" value="<?php echo $term->term_id; ?>" checked="checked" disabled>
<label for="category_<?php echo $term->term_id; ?>">
<div class="catCircle" style="background-color:<?php $marker = get_field('marker', $term->taxonomy . '_' . $term->term_id); echo $marker; ?>"></div>
<?php echo $term->name; ?>
</label>
</li>
<?php
}
?>
<?php
}
?>
这是我的帖子数组:
<?php
$args = array(
'post_type' => 'project',
'posts_per_page' => -1,
);
$posts_array = get_posts($args);
foreach($posts_array as $post){
$post=(array)$post;
$location = get_field('google_map',$post['ID']);
$term = get_terms( 'project-cat' );
$array[] = array(
'title' => $post['post_title'],
'subtitle' => get_field('status',$post['ID']),
'catColor' => get_field('marker', $term->taxonomy . '_' . $term->term_id),
'catID' => get_field('taxo',$post['ID']),
'lat' => $location['lat'],
'lng' => $location['lng'],
'url' =>get_permalink($post['ID']),
);
}
?>
此代码显示所有帖子的某种类别颜色。 例如:类别A,所选颜色为粉红色,所有帖子均显示粉红色。
如果有人可以帮我纠正查询,我们将不胜感激。
答案 0 :(得分:1)
我会选择这样的东西,使用默认颜色(在我的示例中为#ff0000),然后使用帖子的第一个类别的颜色覆盖它。请注意,我正在使用wp_get_post_terms - 我想这就是你想要的,而不是get_terms(它总是会获得所有条款,而不仅仅是那些为个别帖子选择的条款)。
$terms = wp_get_post_terms( $post['ID'], 'project-cat' );
$catColor = "#ff0000";
if(is_array($terms) && count($terms)) {
if($newColor = get_field('marker', $terms[0]->taxonomy . '_' . $terms[0]->term_id)) {
$catColor = $newColor;
}
}
$array[] = array(
'title' => $post['post_title'],
'subtitle' => get_field('status',$post['ID']),
'catColor' => $catColor,
'catID' => get_field('taxo',$post['ID']),
'lat' => $location['lat'],
'lng' => $location['lng'],
'url' =>get_permalink($post['ID']),
);