I am organising posts on a blog-type website into "issues", each containing 10 articles and assigned a unique category such as issue7.

Using a sidebar widget I want to list these categories so that a user can click on "Issue 7" and they will bring up all the articles in category issue7, namely articles 61-70.

It's straightforward to list them in alphabetical order of the category names. But how can I list them in reverse alphabetical order of those names, such that the link "Issue 3" (for category issue3) appears before "Issue 2" and the link to the latest "issue" appears at the top?

I'm using Astra with a child theme. I've tried putting the following into functions.php in the child theme, but to no effect:

$categories = get_terms( 'category', array(
'orderby'    => 'name',
'order'      => 'DESC',
'hide_empty' => 0
) );

(I realise that once I go over Issue 9 I will probably have to rename category issue1 as issue01.)

1 Answer 1


Redefine arguments for 'category' taxonomy ONLY:

add_filter( 'get_terms_args', 'my_term_args', 10, 2 );

function my_term_args( $args, $taxonomies ) {
    // don't affect admin area passing back default arguments
    if ( is_admin() ) {
        return $args;

    // check the taxonomy in use and redefine it's default arguments
    if( in_array( 'category', $taxonomies ) ) {
        $args['orderby']    = 'name';
        $args['order']      = 'DESC';
        $args['hide_empty'] = false;

    return $args;

Also, get_terms() syntax you've posted is obsolete since version 4.5. The new syntax look like this:

$categories = get_terms( array(
    'taxonomy'   => 'category'
    'orderby'    => 'name',
    'order'      => 'DESC',
    'hide_empty' => false
) );
  • Many thanks for this, which works great. But are you saying it would also be possible to use get_terms() with the new syntax?
    – user169591
    Jun 7, 2019 at 16:33
  • Yes, but only if you develop your own widget.
    – Max Yudin
    Jun 7, 2019 at 17:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.