Title: WP_Term_Query::parse_orderby
Published: August 16, 2016
Last modified: August 20, 2026

---

# WP_Term_Query::parse_orderby( string $orderby_raw ): string|false

## In this article

 * [Parameters](https://developer.wordpress.org/reference/classes/wp_term_query/parse_orderby/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/classes/wp_term_query/parse_orderby/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/classes/wp_term_query/parse_orderby/?output_format=md#source)
 * [Hooks](https://developer.wordpress.org/reference/classes/wp_term_query/parse_orderby/?output_format=md#hooks)
 * [Related](https://developer.wordpress.org/reference/classes/wp_term_query/parse_orderby/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/classes/wp_term_query/parse_orderby/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wp_term_query/parse_orderby/?output_format=md#wp--skip-link--target)

Parse and sanitize ‘orderby’ keys passed to the term query.

## 󠀁[Parameters](https://developer.wordpress.org/reference/classes/wp_term_query/parse_orderby/?output_format=md#parameters)󠁿

 `$orderby_raw`stringrequired

Alias for the field to order by.

## 󠀁[Return](https://developer.wordpress.org/reference/classes/wp_term_query/parse_orderby/?output_format=md#return)󠁿

 string|false Value to used in the ORDER clause. False otherwise.

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wp_term_query/parse_orderby/?output_format=md#source)󠁿

    ```php
    protected function parse_orderby( $orderby_raw ) {
    	$_orderby           = strtolower( $orderby_raw );
    	$maybe_orderby_meta = false;

    	if ( in_array( $_orderby, array( 'term_id', 'name', 'slug', 'term_group' ), true ) ) {
    		$orderby = "t.$_orderby";
    	} elseif ( in_array( $_orderby, array( 'count', 'parent', 'taxonomy', 'term_taxonomy_id', 'description' ), true ) ) {
    		$orderby = "tt.$_orderby";
    	} elseif ( 'term_order' === $_orderby ) {
    		$orderby = 'tr.term_order';
    	} elseif ( 'include' === $_orderby && ! empty( $this->query_vars['include'] ) ) {
    		$include = implode( ',', wp_parse_id_list( $this->query_vars['include'] ) );
    		$orderby = "FIELD( t.term_id, $include )";
    	} elseif ( 'slug__in' === $_orderby && ! empty( $this->query_vars['slug'] ) && is_array( $this->query_vars['slug'] ) ) {
    		$slugs   = implode( "', '", array_map( 'sanitize_title_for_query', $this->query_vars['slug'] ) );
    		$orderby = "FIELD( t.slug, '" . $slugs . "')";
    	} elseif ( 'none' === $_orderby ) {
    		$orderby = '';
    	} elseif ( empty( $_orderby ) || 'id' === $_orderby || 'term_id' === $_orderby ) {
    		$orderby = 't.term_id';
    	} else {
    		$orderby = 't.name';

    		// This may be a value of orderby related to meta.
    		$maybe_orderby_meta = true;
    	}

    	/**
    	 * Filters the ORDERBY clause of the terms query.
    	 *
    	 * @since 2.8.0
    	 *
    	 * @param string   $orderby    `ORDERBY` clause of the terms query.
    	 * @param array    $args       An array of term query arguments.
    	 * @param string[] $taxonomies An array of taxonomy names.
    	 */
    	$orderby = apply_filters( 'get_terms_orderby', $orderby, $this->query_vars, $this->query_vars['taxonomy'] );

    	// Run after the 'get_terms_orderby' filter for backward compatibility.
    	if ( $maybe_orderby_meta ) {
    		$maybe_orderby_meta = $this->parse_orderby_meta( $_orderby );
    		if ( $maybe_orderby_meta ) {
    			$orderby = $maybe_orderby_meta;
    		}
    	}

    	return $orderby;
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/class-wp-term-query.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.1/src/wp-includes/class-wp-term-query.php#L920)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.1/src/wp-includes/class-wp-term-query.php#L920-L967)

## 󠀁[Hooks](https://developer.wordpress.org/reference/classes/wp_term_query/parse_orderby/?output_format=md#hooks)󠁿

 [apply_filters( ‘get_terms_orderby’, string $orderby, array $args, string[] $taxonomies )](https://developer.wordpress.org/reference/hooks/get_terms_orderby/)

Filters the ORDERBY clause of the terms query.

## 󠀁[Related](https://developer.wordpress.org/reference/classes/wp_term_query/parse_orderby/?output_format=md#related)󠁿

| Uses | Description | 
| [WP_Term_Query::parse_orderby_meta()](https://developer.wordpress.org/reference/classes/wp_term_query/parse_orderby_meta/)`wp-includes/class-wp-term-query.php` |

Generate the ORDER BY clause for an ‘orderby’ param that is potentially related to a meta query.

  | 
| [wp_parse_id_list()](https://developer.wordpress.org/reference/functions/wp_parse_id_list/)`wp-includes/functions.php` |

Cleans up an array, comma- or space-separated list of IDs.

  | 
| [apply_filters()](https://developer.wordpress.org/reference/functions/apply_filters/)`wp-includes/plugin.php` |

Calls the callback functions that have been added to a filter hook.

  |

[Show 1 more](https://developer.wordpress.org/reference/classes/wp_term_query/parse_orderby/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/classes/wp_term_query/parse_orderby/?output_format=md#)

| Used by | Description | 
| [WP_Term_Query::get_terms()](https://developer.wordpress.org/reference/classes/wp_term_query/get_terms/)`wp-includes/class-wp-term-query.php` |

Retrieves the query results.

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wp_term_query/parse_orderby/?output_format=md#changelog)󠁿

| Version | Description | 
| [4.6.0](https://developer.wordpress.org/reference/since/4.6.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwp_term_query%2Fparse_orderby%2F)
before being able to contribute a note or feedback.