从分类页面检索值

时间:2018-01-01 08:16:16

标签: php wordpress advanced-custom-fields

我正在使用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,所选颜色为粉红色,所有帖子均显示粉红色。

如果有人可以帮我纠正查询,我们将不胜感激。

1 个答案:

答案 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']),
);