I think thats a quick one:
I’ve got:
- Custom post type: Food
- Custom taxonomy (Registered to Food): Fruits
- Terms in Fruits: Apple, Orange, Cherry
If I type in example.com/food?fruits=Apple,Cherry, I get all posts in Fruits with the terms Apple and Cherry, thats great!
But I would like to type in example.com/food/fruits/Apple,Cherry or example.com/food/Apple,Cherry to get the same result.
I´ve tried different permalink and rewrite plugins related to custom posts but nothing helped.
Thank you,
David
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
You have to build up the link structure by using filters post_link and post_type_link:
add_filter('post_link', 'territorio_permalink', 10, 3);
add_filter('post_type_link', 'territorio_permalink', 10, 3);
function territorio_permalink($permalink, $post_id, $leavename) {
if (strpos($permalink, '%territorio%') === FALSE) return $permalink;
// Get post
$post = get_post($post_id);
if (!$post) return $permalink;
// Get taxonomy terms
$terms = wp_get_object_terms($post->ID, 'territorio','orderby=term_order');
if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0]))
$taxonomy_slug = $terms[0]->slug.'/'.$terms[1]->slug; //build here
else $taxonomy_slug = 'not-yet';
return str_replace('%territorio%', $taxonomy_slug, $permalink);
}
Where hotel is the post type and territorio is a hierarchical taxonomy.
In post type creation use:
'rewrite' => array( 'slug' => 'anything-you-want/%territorio%','with_front' => false),
Note: if you want deeper links, your build should go deeper:
$taxonomy_slug = $terms[0]->slug.'/'.$terms[1]->slug.'/'.$terms[2]->slug;
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0