web-dev-qa-db-fra.com

Ordre des catégories personnalisées avec get_categories

J'ai un site avec le thème metro_creativex avec menu latéral qui affiche les catégories dans un ordre alphabétique. Maintenant, je dois les trier selon mon propre ordre (ce n'est pas alphabétique inversé ni par id) et, puisque sur ma page, une fonction permettant d'afficher le menu latéral est appelée, sur la fonction que je trouve sur cette ligne que j'ai déjà modifiée pour afficher uniquement le catégories dont j'avais besoin:

$metro_creativex_terms = get_categories('hide_empty=0&exclude=1,22,23,24,49');

Maintenant, au lieu de lui dire de ne pas montrer les catégories vides et de cacher certaines autres catégories par leur identifiant, je veux lui dire de montrer les catégories dans cet ordre exact: 47, 44, 43, 45, 42, 41, 40, 25, 46. De plus, je n’ai pas besoin d’autres catégories avec celles-là, alors je recherche un ordre vraiment rigide.
Voici comment la variable est utilisée:

<?php
          $metro_creativex_terms = get_categories('hide_empty=0&exclude=1,22,23,24,49');

          if ($metro_creativex_terms) {
            foreach( $metro_creativex_terms as $metro_creativex_term ) {
                $metro_creativex_post_nr = $metro_creativex_term->count;
                if ( $metro_creativex_post_nr == "1" )
                    $metro_creativex_post_nr_display = "song";
                else {
                    $metro_creativex_post_nr_display = 'songs';
                }
              echo '
                <a href="' . get_category_link( $metro_creativex_term->term_id ) . '" class="color-code" title="' . $metro_creativex_term->name.'">
                    ' .'<span>'. $metro_creativex_term->name.'</span>'.'
                    <div class="read bg-code">
                        <p>'.$metro_creativex_post_nr.'</p><span>'.$metro_creativex_post_nr_display.'</span>
                    </div>
                </a>';
                }
          }
        ?>

Est-il même possible de commander des catégories en fonction de ma commande personnalisée?

2
EliChan

Ordre exact par id de catégorie sur get_categories

@ EliChan, en utilisant get_categories , je ne pense pas qu'il soit possible d'exécuter l'ordre par id si vous utilisez exclude. Il vaut mieux utiliser include comme paramètre de ids order et orderby avec la valeur include.

$args = array(
    'hide_empty' => 0,
    'orderby'    => 'include',
    'include'    => array( 47, 44, 43, 45, 42, 41, 40, 25, 46 ) //exact order id
);
$metro_creativex_terms = get_categories($args);

Vous pouvez voir get_terms pour les valeurs acceptées pour $args.

1
Jevuska