Reputation: 5846
I am querying the terms in a custom taxonomy i have with the following code:
<?php
$term_slug = get_query_var('term');
$taxonomyName = get_query_var('taxonomy');
$current_term = get_term_by('slug', $term_slug, $taxonomyName);
$termchildren = get_term_children($current_term->term_id, $taxonomyName);
foreach ($termchildren as $child) {
$term = get_term_by('id', $child, $taxonomyName);
echo '<li id="mid"><a href="#tab-' . $slug = $term->slug . '">' . $term->name . '</a></li>';
}
?>
This is all working great! The problem I have is that I would like to order it by menu-order or something similar. At the moment they are in random order!
Can anyone suggest what I need to do?
Upvotes: 4
Views: 36070
Reputation: 31
Use the code in the taxonomy file:
$wterm = get_queried_object();
$termslug = $wterm->slug;
$termname = $wterm->name;
$termid = $wterm->term_id;
$terms = get_terms( 'taxonomy-name', array(
'orderby' => 'name',
'hide_empty' => 0,
'child_of' => $termid
) );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
foreach ( $terms as $term ) {
echo $term->name ;
}
}
Upvotes: 0
Reputation: 1068
Try to use get_terms function. Your code than would be like this (you can specifiy orderby and order arg)
<?php
$term_slug = get_query_var('term');
$taxonomy_name = get_query_var('taxonomy');
$current_term = get_term_by('slug', $term_slug, $taxonomy_name);
if ( true === is_a( $current_term, 'WP_Term' ) ) {
$args = array(
'child_of' => $current_term->term_id,
'orderby' => 'id',
'order' => 'DESC'
);
$terms = get_terms($taxonomyName, $args);
if ( true === is_array( $terms ) ) {
foreach ($terms as $term) {
echo '<li id="mid"><a href="#tab-' . esc_attr( $term->slug ) . '">' . esc_html( $term->name ) . '</a></li>';
}
}
}
?>
Upvotes: 15