Title: WP_Term_Query::parse_orderby_meta
Published: August 16, 2016
Last modified: February 24, 2026

---

# WP_Term_Query::parse_orderby_meta( string $orderby_raw ): string

## In this article

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

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

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

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

 `$orderby_raw`stringrequired

Raw `'orderby'` value passed to [WP_Term_Query](https://developer.wordpress.org/reference/classes/wp_term_query/).

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

 string ORDER BY clause.

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

    ```php
    protected function parse_orderby_meta( $orderby_raw ) {
    	$orderby = '';

    	// Tell the meta query to generate its SQL, so we have access to table aliases.
    	$this->meta_query->get_sql( 'term', 't', 'term_id' );
    	$meta_clauses = $this->meta_query->get_clauses();
    	if ( ! $meta_clauses || ! $orderby_raw ) {
    		return $orderby;
    	}

    	$allowed_keys       = array();
    	$primary_meta_key   = null;
    	$primary_meta_query = reset( $meta_clauses );
    	if ( ! empty( $primary_meta_query['key'] ) ) {
    		$primary_meta_key = $primary_meta_query['key'];
    		$allowed_keys[]   = $primary_meta_key;
    	}
    	$allowed_keys[] = 'meta_value';
    	$allowed_keys[] = 'meta_value_num';
    	$allowed_keys   = array_merge( $allowed_keys, array_keys( $meta_clauses ) );

    	if ( ! in_array( $orderby_raw, $allowed_keys, true ) ) {
    		return $orderby;
    	}

    	switch ( $orderby_raw ) {
    		case $primary_meta_key:
    		case 'meta_value':
    			if ( ! empty( $primary_meta_query['type'] ) ) {
    				$orderby = "CAST({$primary_meta_query['alias']}.meta_value AS {$primary_meta_query['cast']})";
    			} else {
    				$orderby = "{$primary_meta_query['alias']}.meta_value";
    			}
    			break;

    		case 'meta_value_num':
    			$orderby = "{$primary_meta_query['alias']}.meta_value+0";
    			break;

    		default:
    			if ( array_key_exists( $orderby_raw, $meta_clauses ) ) {
    				// $orderby corresponds to a meta_query clause.
    				$meta_clause = $meta_clauses[ $orderby_raw ];
    				$orderby     = "CAST({$meta_clause['alias']}.meta_value AS {$meta_clause['cast']})";
    			}
    			break;
    	}

    	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/6.9.4/src/wp-includes/class-wp-term-query.php#L1024)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/class-wp-term-query.php#L1024-L1073)

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

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

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

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wp_term_query/parse_orderby_meta/?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_meta%2F)
before being able to contribute a note or feedback.