web-dev-qa-db-fra.com

Modifier l'ordre de la liste de taxonomie personnalisée

Par défaut, WordPress ordonne les taxonomies personnalisées (sous forme de balises dans ce cas) par ordre alphabétique et non par l'ordre dans lequel elles ont été entrées dans la boîte à balises.

Est-ce que quelqu'un connaît un moyen d'afficher les taxonomies personnalisées dans l'ordre dans lequel elles ont été entrées dans l'écran de post-édition?

L'URL en question est: http://granadatheater.com/

Les artistes de GGW (Goes Good With) sont actuellement classés par ordre alphabétique et ils souhaitent que cela soit modifié de manière à ce qu'ils soient classés de la même manière.

Donc, si vous entrez Artist1, Artist3, Artist2, c'est ainsi que cela devrait apparaître sur la face avant du site.

11
curtismchale

Ce n'est pas possible "out of the box" ...

Les options 'orderby' par défaut sont (croissant ou décroissant)

  • Nom d'identifiant
  • Default
  • limace
  • compter
  • term_group

Celles-ci sont toutes détaillées dans le codex.

-

Cela dit, il y a des femmes et des hommes intelligents ici. Si quelqu'un peut le résoudre, un de ces gars peut en être sûr!

0
George Wiscombe

Après de nombreuses recherches et des tests approfondis, j'ai trouvé la réponse.

Ajoutez ce code au functions.php de votre thème:

function set_the_terms_in_order ( $terms, $id, $taxonomy ) {
    $terms = wp_cache_get( $id, "{$taxonomy}_relationships_sorted" );
    if ( false === $terms ) {
        $terms = wp_get_object_terms( $id, $taxonomy, array( 'orderby' => 'term_order' ) );
        wp_cache_add($id, $terms, $taxonomy . '_relationships_sorted');
    }
    return $terms;
}
add_filter( 'get_the_terms', 'set_the_terms_in_order' , 10, 4 );

function do_the_terms_in_order () {
    global $wp_taxonomies;  //fixed missing semicolon
    // the following relates to tags, but you can add more lines like this for any taxonomy
    $wp_taxonomies['post_tag']->sort = true;
    $wp_taxonomies['post_tag']->args = array( 'orderby' => 'term_order' );    
}
add_action( 'init', 'do_the_terms_in_order');

(Crédit: ceci est basé sur - mais amélioré - http://wordpress.kdari.net/2011/07/listing-tags-in-custom-order.html )

7
Biranit Goren

Je sais que c'est une sorte de tricherie, mais vous pouvez toujours utiliser le plugin Simple Custom Post Order . C'est gratuit, et cela vous permet de trier les taxonomies en plus des types de post.

2
Nate

J'ai eu du mal à trouver la réponse aux termes alphabétiques d'une taxonomie personnalisée ... Je ne recommanderais pas de modifier les fichiers de base WP, voici donc ce que j'ai ajouté à mon fichier taxonomy.php pour le répertorier descriptions de taxonomie personnalisées, avec des liens vers les termes enfants dans l'ordre alphabétique. Modifiez en fonction de vos besoins, j'espère que cela aidera quelqu'un.

// Get Main Taxonomy for use in template file
$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
$termTaxonomy = $term->taxonomy;

<h1><?php echo apply_filters( 'the_title', $term->name ); ?></h1>

<?php // test for description before unleashing a div 
if ( !empty( $term->description ) ): 
  echo '<div class="description">';
  echo $term->description;
  echo '</div>;
endif; ?>

// Now get children terms, using get_term & 'child_of' get's us alphabetical order
$termchildren = get_terms( $termTaxonomy, array(
  'child_of'     => $term->term_id,
  'hierarchical' => 0,
  'fields'       => 'ids',
  'hide_empty'   => 0
) );

// Make an alphabetical linked list
echo '<ul>';
foreach ($termchildren as $child) {
  $term = get_term_by( 'id', $child, $termTaxonomy );

  // Modify this echo to customize the output for each child term
  echo '<li><a href="' . get_term_link( $term->name, $termTaxonomy ) . '" alt="' .$term->description. '">' . $term->name . '</a></li>';
}
echo '</ul>';
2
Erik Rodne