I have a custom post type and I’m trying to call up different variations of the navigation based on the custom taxonomy slug. I’ve done this fairly easily with normal posts, like so:
<?php
if ( is_category( 'mixers' )) {
include (TEMPLATEPATH.'/nav-mixers.php');
} elseif ( is_category( 'monitors' )) {
include (TEMPLATEPATH.'/nav-monitors.php' );
} elseif ( is_category( 'speakers' )) {
include (TEMPLATEPATH.'nav-speakers.php');
}
?>
however this is proving challenging for a custom post type. I feel like I’m close but I need some help now. Here’s where I currently am.
<?php
$terms = get_the_terms( $post->id, 'prodcat' ); // get an array of all the terms as objects.
$terms_slugs = array();
foreach( $terms as $term ) {
$terms_slugs[] = $term->slug; // save the slugs in an array
}
if( $terms ) :
get_template_part( 'nav', slug );
else :
get_template_part( 'nav', 'home' );
endif;
?>
Any help is much appreciated!
3 Answers
To loop through all the slugs of a term list, simply call get_the_terms()
and pull only the slugs:
$slugs = wp_list_pluck( get_the_terms( get_the_ID(), 'prodcat' ), 'slug' );
Then you need to check if you got any results:
if ( ! empty( $slugs ) )
The problem I then see arising is that you got a bunch of slugs in return (unless you restricted the admin meta box to allowing only a single term).
You’d then have to decide on some custom criteria which nav menu you want to have and pull that from the list of $slugs
:
// Decide which slug fits and then determine the key:
$key = 0;
get_template_part( 'nav', $slugs[ $key ] );