Сортировка записей по названию пользовательской таксономии
Одно из решений:
// Получаем все термины таксономии
$terms = get_terms('taxonomy-name');
// Перебираем каждый термин
foreach($terms as $term) {
// Получаем все записи для текущего термина
$posts = get_posts(array(
'post_type' => 'custom_post_type_name', // Тип записи
'tax_query' => array( // Запрос по таксономии
array(
'taxonomy' => 'taxonomy-name', // Название таксономии
'field' => 'slug', // Поле для сопоставления (слаг)
'terms' => $term->slug // Слаг текущего термина
)
),
'numberposts' => -1 // Получить все записи
));
// Перебираем все найденные записи
foreach($posts as $post) {
// Здесь можно выполнить нужные действия с записями
}
}

Вы правы, в будущем буду внимательнее. Отредактировал ответ выше

Есть ли способ отсортировать foreach $term->name по убыванию (DESC)?

да, есть. Измените первую строку на - $terms = get_terms('taxonomy-name', array('order' => 'DESC')); Полную документацию смотрите на этой странице кодекса - http://codex.wordpress.org/Function_Reference/get_terms

Я знаю, что это старый вопрос, на который уже есть отличный ответ, но сегодня я несколько часов бился над очень похожей проблемой и придумал альтернативный цикл.
Вы также можете немного адаптировать (превосходное) решение Mridul, если хотите, чтобы это работало на странице архива для таксономии. Другими словами, вы можете сортировать архив произвольной таксономии по другой таксономии с помощью этого решения.
Я делюсь этим, потому что сегодня потратил четыре часа на борьбу с этой проблемой, и если кто-то ещё пытается создать архив произвольной таксономии, отсортированный по другой таксономии, вот как это можно сделать. (Кстати, это мой первый ответ на StackExchange — пожалуйста, будьте снисходительны! :))
Начинается всё точно так же, как в решении Mridul. Сначала запрашиваем таксономию, по которой хотим сортировать записи.
$terms = get_terms( array(
'taxonomy' => 'custom_taxonomy_one',
'parent' => 0, // Это помогло мне избежать повторяющихся таксономий; возможно, вам это не нужно
) );
foreach($terms as $term) {
echo '<h2>' . $term->name . '</h2>'; // Выводим название термина
Здесь начинаются отличия от ответа Mridul. Нам нужно запросить две таксономии и убедиться, что отношение между ними установлено как "AND", что означает, что перечисленные записи соответствуют критериям обеих таксономий.
В данном случае записи в "custom_post_type" должны соответствовать слагу первого термина и названию другого. Надеюсь, код будет понятен всем!
$posts = get_posts(array(
'post_type' => 'custom_post_type', // Получаем записи из произвольного типа записей
'tax_query' => array(
'relation' => 'AND', // записи должны соответствовать обеим таксономиям
array(
'taxonomy' => 'custom_taxonomy_one',
'field' => 'slug',
'terms' => $term->slug // соответствие слагу термина из предыдущего массива
),
array(
'taxonomy' => 'custom_taxonomy_two',
'field' => 'slug',
'terms' => 'custom_taxonomy_two_term_name'
)
),
'numberposts' => -1
));
foreach($posts as $post) {
// Делаем что нужно
}
}

Альтернативный цикл, где tax = category
и пользовательский post type = "results"
$args = array( 'taxonomy' => 'category' );
$terms = get_terms( 'category', $args);
//НАЧАЛО ЦИКЛА FOREACH
foreach ($terms as $term) {
$post_type = 'results';
$tax = 'category';
$tax_terms = get_terms( $tax );
if ($tax_terms) {
foreach ($tax_terms as $tax_term) {
$args = array(
'post_type' => $post_type,
"$tax" => $tax_term->slug,
'post_status' => 'publish',
'posts_per_page' => -1,
'caller_get_posts'=> 1
);
$my_query = null;
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) : ?>
// ЦИКЛ WHILE
<?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
// Выполнить действия
<?php endwhile; ?>
// КОНЕЦ ЦИКЛА WHILE
<?php else : ?>
<?php endif; wp_reset_query(); ?>
}
// КОНЕЦ ЦИКЛА FOREACH

"caller_get_posts" устарел, кстати. Используйте "ignore_sticky_posts" Источник - http://codex.wordpress.org/Class_Reference/WP_Query#Sticky_Post_Parameters
