wppaste
WordPress

WP_Term_Query::parse_orderby_meta( string $orderby_raw ): string

Since
4.6.0
Source
wp-includes/class-wp-term-query.php:1022
Generate the ORDER BY clause for an 'orderby' param that is potentially related to a meta query.

Parameters

$orderby_rawstring
Raw 'orderby' value passed to WP_Term_Query.

Return

string
ORDER BY clause.

Used by · 1

Source

	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;	}

History

Introduced in 4.6.0. Unchanged from 6.7.7 through 7.1.0.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 7.1.0

Signature, return type and hooks compared across 5 parsed releases.

About this page

Parsed data
Generated from the wordpress-develop 6.7.7 tag, from src/wp-includes/class-wp-term-query.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.