Pregunta:
Tengo una taxonomía personalizada de "crb_issues" que tiene un campo personalizado asociado que es "issue_date" que genera un valor de fecha para cada término que se parece mucho a "20140601" yearmonthday.
Estoy tratando de poner todos los términos de taxonomías usando get_terms y ordenarlos por ese campo personalizado. A continuación se muestra el código en el que he estado trabajando, que genera el nombre de los términos y el valor de "issue_date" muy bien. Pero estoy teniendo dificultades para ordenar lo que se genera en ese campo personalizado.
$args = array(
'meta_key' => 'issue_date',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'hide_empty' => true,
'number' => '4',
'fields' => 'all',
);
$terms = get_terms("crb_issues", $args);
if ( !empty( $terms ) && !is_wp_error( $terms ) ){
echo "<ul>";
foreach ( $terms as $term ) {
echo "<li>" . $term->name . "</li>";
the_field('issue_date', $term);
}
echo "</ul>";
}
Cualquier ayuda será muy apreciada.
Respuesta:
En lugar de generar sus términos en ese ciclo inicial, lo usaría para construir una nueva matriz, con su issue_date como clave:
$my_new_array = array( );
foreach ( $terms as $term ) {
$issue_date = get_field( 'issue_date', $term );
$my_new_array[$issue_date] = $term->name;
}
Luego puede recorrer esta nueva matriz en orden:
ksort( $my_new_array, SORT_NUMERIC );
foreach ( $my_new_array as $issue_date => $term_name ) {
echo "<li>" . $term_name . " " . $issue_date . "</li>";
}
Esto no ha sido probado.