skip to Main Content

I’ve added a custom field as color-code to my categories, and I want to show the categories of each post with that color code on it. I tried the code below, but it doesn’t work in the way I need.

 <div class="blog-post-grids">
      <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
        $args = array('post_type' => 'post', 'posts_per_page' => 9, 'paged' => $paged);
         $wp_query = new WP_Query($args);
         while (have_posts()): the_post();?>
         <?php 
          $color = get_field('color-code', the_category());
         ?>
         <figure class="blog-post-cart">
           <div><?php the_post_thumbnail();?></div>
           <figcaption>
              <a href="<?php the_permalink() ?>">
                <h2><?php the_title()?></h2>
              </a>
              <p style="color: <?php echo $color ?>">
               <?php echo the_category(', ')  ?>
              </p>
              <?php the_content(''); ?>
           </figcaption>
         </figure>
        <?php endwhile;?>
    </div>

2

Answers


  1. It depends on the color code type

    If it hex add # before,

    Or make sure it’s in rgb format like rgb(143 98 188)

    Login or Signup to reply.
  2. To do this, you will need the category’s ID, as outlined here:
    https://www.advancedcustomfields.com/resources/adding-fields-taxonomy-term/

    Your get_field() would be formatted like this:

    $color = get_field('color-code', 'category_123');
    

    Where "123" is the ID of the Category.

    Right before the get_field like, add this:

    $thisCategory = get_the_category();
    

    $thisCategory will be an array of all of the categories attached to the current post in the loop.

    Then replace your $color = get_field() line with this:

    $color = get_field('color-code', 'category_'.$thisCategory[0]->term_id);
    

    $thisCategory[0]->term_id will return the category ID of the first category attached to the post.

    So to put it all together, this would be the new code:

     <div class="blog-post-grids">
      <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
        $args = array('post_type' => 'post', 'posts_per_page' => 9, 'paged' => $paged);
         $wp_query = new WP_Query($args);
         while (have_posts()): the_post();?>
         <?php 
          $thisCategory = get_the_category();
          $color = get_field('color-code',  'category_'.$thisCategory[0]->term_id);
         ?>
         <figure class="blog-post-cart">
           <div><?php the_post_thumbnail();?></div>
           <figcaption>
              <a href="<?php the_permalink() ?>">
                <h2><?php the_title()?></h2>
              </a>
              <p style="color: <?php echo $color ?>">
               <?php echo the_category(', ')  ?>
              </p>
              <?php the_content(''); ?>
           </figcaption>
         </figure>
        <?php endwhile;?>
    </div>
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search