Вы можете попробовать другой подход. Попробуйте использовать get_posts, чтобы отсортировать свои сообщения по вашей пользовательской таксономии, установите переменную, которая изначально является пустой строкой (называемой $ current_cat или чем-то), и с каждым циклом результатов проверяйте таксономию и сравнивайте ее с $ current_cat - если иначе распечатайте заголовок для новой категории, а затем запись, если такая же, распечатайте запись как обычно.
Очевидная проблема с вашим кодом (я полагаю) заключается в том, что вы неправильно запрашиваете свою пользовательскую таксономию. Вы должны использовать просто taxonomy_name => 'value'
в своем запросе, пользовательская таксономия не будет затронута cat
в запросе.
Дайте мне знать, если вам нужно больше деталей.
редактировать: подробнее!
// get a list of categories, in this case your custom taxonomy (your_taxonomy_name)
$querystr = "SELECT terms.* FROM $wpdb->term_taxonomy tax LEFT JOIN $wpdb->terms terms ON tax.term_id = terms.term_id WHERE tax.taxonomy = 'your_taxonomy_name'";
$categories = $wpdb->get_results($querystr, OBJECT);
foreach( $categories as $category ): // begin a loop through those terms (categories in your custom taxonomy)
echo '<div class="category-header"><h3>'.$category->name.'</h3>'; // print the cat title
echo '<p class="category-description">'.strip_tags(term_description($category->term_id,'your_taxonomy_name')).'</p></div>'; // cat description
$posts = get_posts( array( 'your_taxonomy_name' => $category->name, 'post_type' => 'your_post_type' ) ) //select posts in this category, and of a specified content type
foreach($posts as $post) : // begin cycle through posts of this category
setup_postdata($post); //set up post data for use in the loop (enables the_title(), etc without specifying a post ID)
[ ... ] // do things with your post (display it)
endforeach;
endforeach;
Это должно сделать это - и этот может быть полезен для использования get_posts.