I had same problem.
According to documentation:
The hierarchy for a custom taxonomy is listed below:
taxonomy-{taxonomy}-{term}.php
taxonomy-{taxonomy}.php
taxonomy.php
archive.php
index.php
So, it doesn’t matter witch template file you are using, all of them will generate same issue.
When I put in the beginning of template file code var_dump($wp_query);
, i found this:
public 'request' => string 'SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND (
wp_term_relationships.term_taxonomy_id IN (20)
) AND wp_posts.post_type IN ('post', 'page', 'attachment') AND (wp_posts.post_status="publish" OR wp_posts.post_author = 1 AND wp_posts.post_status="private") GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10' (length=433)
public 'posts' =>
Important part in this query is wp_posts.post_type IN ('post', 'page', 'attachment')
.
Problem occur because there is no your custom post_type
in this array ('post', 'page', 'attachment')
.
I don’t know why it’s happen, but it’s possible to fix it using pre_get_posts
hook:
add_filter('pre_get_posts', 'add_custom_post_type_to_query');
function add_custom_post_type_to_query($query) {
// We do not want unintended consequences.
if ( is_admin() || ! $query->is_main_query() ) {
return;
}
// Check if custom taxonomy is being viewed
if( is_tax() && empty( $query->query_vars['suppress_filters'] ) )
{
$query->set( 'post_type', array(
'post',
'page',
'my_custom_post_type'
) );
}
}