php - Assign multiple categories as classes from custom post types in wordpress
I have set up some custom post types and I am trying to achieve an on-page filter using javascript. I have managed to be able to output the first class that is signed, but I cannot get it to add multiple classes. Ideally, I don't want to have to hardcode the categories as I will be handing this over to a client and they will be adding many more in the future.
Here is what I have so far:
<?php
$loop = new WP_Query( array(
'post_type' => 'portfolio_item',
'order' => 'ASC',
'posts_per_page' => -1
)
);
while ( $loop->have_posts() ) : $loop->the_post();
$cats = wp_get_post_categories($post_id);
echo '<div class="'.implode(" ", $cats).' filter-item pb-3">';
?>
<div class="p-4 border text-center bg-white h-100 rounded">
<a href="<?php echo the_permalink();?>">
<div class="dealer-logo" style="height: 300px">
<img src="<?php echo get_the_post_thumbnail_url($post_id, 'full'); ?>"
class="mb-4 mx-auto object-fit object-cover" style="height: 300px">
</div>
<h3><?php echo the_title(); ?></h3>
<div class="mt-4 pb-3">
<p>Read More</p>
</div>
</a>
</div>
</div>
<?php endwhile;?>
So for example, in the top 'filter-item' div I would hope to see 2/3 classes populated that belong to that custom post type.
I currently just get the first class that is associated with the post. I guess I need to put the categories in an array and then loop over these. However, that is a little bit beyond me.
Any help is much appreciated!
Answer
Solution:
As you mentioned you would need to get the post categories in array. Use wp_get_post_categories
function
Once you have categories in array use this.
$cats = array('one','two','three');
echo '<h2 class="'.implode(" ", $cats).'">Test</h2>';
This will get you what you're after.
Source