web-dev-qa-db-fra.com

Comment personnaliser les résultats de wp_list_categories?

J'utilise wp_list_categories pour renvoyer (vous l'avez deviné) une liste de catégories dans une taxonomie personnalisée. Le paramètre orderby accepte le tri par ID, nom, slug, nombre et term_group. Est-il possible de personnaliser le tri des résultats? Idéalement, je pourrais transmettre un tableau d'identifiants de catégorie dans l'ordre souhaité, mais il faudra évidemment que je fouille un peu plus profondément pour que cela soit trié.

3
Ryan

Il existe une colonne inutilisée, term_order, dans la table wp_term_relationships que vous pouvez utiliser pour affecter un ordre personnalisé aux termes de votre taxonomie. La commande est définie à 0 par défaut et il faudra une requête personnalisée pour récupérer la commande et une autre solution pour la définir.

Exemple de requête:

function wpse_order_taxes() {
        global $wpdb;
        $results = $wpdb->get_results ( "SELECT * FROM $wpdb->terms t inner join $wpdb->term_taxonomy tt on t.term_id = tt.term_id WHERE taxonomy = 'category'  ORDER BY term_order ASC LIMIT 0, 10" );
        $categories = array();
        foreach ( $results as $cat ) {
            array_Push( $categories, $cat->slug );
        }
        return $categories;
    }

Cela vous rendrait un tableau de termes ordonnés par l'ordre personnalisé.

5
Chris_O