custom-taxonomy – Ordene get_terms usando un campo personalizado

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.

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım