Ordenar publicaciones por nombre de taxonomía personalizada
¿Es posible ordenar publicaciones (tipo de contenido personalizado) por categoría/taxonomía (nombre, desc)?
Por ejemplo, mis categorías serían:
- Temporada 2012
- alguna publicación
- alguna publicación
- alguna publicación
- Temporada 2011
- alguna publicación
- alguna publicación
- alguna publicación
- Temporada 2010
- etc...
Una solución sería-
$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) {
// haz lo que necesites hacer con los posts aquí
}
}

Tienes razón, tendré más cuidado en el futuro. Edité la respuesta anterior

sí, existe. Cambia la primera línea a- $terms = get_terms('taxonomy-name', array('order' => 'DESC')); Revisa esta página del codex como referencia completa- http://codex.wordpress.org/Function_Reference/get_terms

Sé que esta es una pregunta antigua que ya tiene una excelente respuesta, pero hoy estuve luchando durante horas con algo muy similar y se me ocurrió un bucle alternativo.
También puedes personalizar un poco la solución (excelente) de Mridul si quieres que esto funcione en la página de archivo de una taxonomía. En otras palabras, puedes ordenar un archivo de taxonomía personalizada por otra taxonomía usando esta solución.
Comparto esto porque hoy pasé cuatro horas lidiando con este problema, y si alguien más está intentando crear archivos de taxonomías personalizadas ordenados por una taxonomía diferente, así es como se hace. (Además, esta es mi primera respuesta en StackExchange — ¡por favor sean amables! :) )
Esto comienza exactamente como la solución de Mridul. Consulta la taxonomía por la que deseas ordenar tus publicaciones.
$terms = get_terms( array(
'taxonomy' => 'custom_taxonomy_one',
'parent' => 0, // Esto me ayudó a eliminar taxonomías repetitivas; quizás quieras omitir esto
) );
foreach($terms as $term) {
echo '<h2>' . $term->name . '</h2>'; // Muestra el nombre del término
Aquí es donde se diferencia un poco de la respuesta de Mridul. Quieres consultar dos taxonomías y asegurarte de que la relación entre ellas esté configurada como "AND", lo que significa que las publicaciones listadas cumplen con los criterios de estar en ambas taxonomías.
En este caso, las publicaciones en "custom_post_type" deben coincidir con el slug del primer término y el nombre de otro. ¡Espero que el código tenga sentido para todos!
$posts = get_posts(array(
'post_type' => 'custom_post_type', // Obtiene publicaciones del tipo de publicación personalizada
'tax_query' => array(
'relation' => 'AND', // las publicaciones deben coincidir con ambas taxonomías
array(
'taxonomy' => 'custom_taxonomy_one',
'field' => 'slug',
'terms' => $term->slug // coincide con el slug del término en el array anterior
),
array(
'taxonomy' => 'custom_taxonomy_two',
'field' => 'slug',
'terms' => 'custom_taxonomy_two_term_name'
)
),
'numberposts' => -1
));
foreach($posts as $post) {
// Haz lo tuyo
}
}

Bucle alternativo, donde tax = category
y el tipo de entrada personalizado post type = "results"
$args = array( 'taxonomy' => 'category' );
$terms = get_terms( 'category', $args);
//INICIO DEL BUCLE FOR EACH
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(); ?>
// Hacer algo
<?php endwhile; ?>
// FIN WHILE
<?php else : ?>
<?php endif; wp_reset_query(); ?>
}
// FIN DEL BUCLE FOR EACH

"caller_get_posts" está obsoleto por cierto. Usa "ignore_sticky_posts" Fuente - http://codex.wordpress.org/Class_Reference/WP_Query#Sticky_Post_Parameters
