web-dev-qa-db-fra.com

Ordre de tri des attributs lors de l'utilisation de get_the_terms

Ce code a fonctionné pour afficher les attributs de produit sur une page.

Comment puis-je les trier/commander par slug? Ils sont actuellement triés par nom.

 global $post;
 $terms = get_the_terms( $post->ID, 'pa_size');
 foreach ( $terms as $term ) {
 echo "<li>" .$term->name. "</li>";
 }
1
user48945

Vous devrez les trier vous-même:

 $terms = get_the_terms( $post->ID, 'category');
 foreach ( $terms as $term ) {
  $newterms[$term->slug] = $term;
 }
 ksort($newterms);
 foreach ( $newterms as $term ) {
  echo "<li>" .$term->name. "</li>";
 }

Ou, si vous vous sentez aventureux, la même chose avec un filtre:

function alpha_sort_terms($terms) {
  remove_filter('get_the_terms','alpha_sort_terms');
  foreach ( $terms as $term ) {
    $newterms[$term->slug] = $term;
  }
  ksort($newterms);
  return $newterms;
}
add_filter('get_the_terms','alpha_sort_terms');

$terms = get_the_terms( $post->ID, 'category');
foreach ( $terms as $term ) {
  echo "<li>" .$term->name. "</li>";
}
3
s_ha_dum