WP_Date_Query::sanitize_query( array $queries, array $parent_query = null ): array

Recursive-friendly query sanitizer.

Description

Ensures that each query-level clause has a ‘relation’ key, and that each first-order clause contains all the necessary keys from $defaults.

Parameters

$queriesarrayrequired
$parent_queryarrayoptional

Default:null

Return

array Sanitized queries.

Source

public function sanitize_query( $queries, $parent_query = null ) {	$cleaned_query = array();	$defaults = array(	'column' => 'post_date',	'compare' => '=',	'relation' => 'AND',	);	// Numeric keys should always have array values.	foreach ( $queries as $qkey => $qvalue ) {	if ( is_numeric( $qkey ) && ! is_array( $qvalue ) ) {	unset( $queries[ $qkey ] );	}	}	// Each query should have a value for each default key. Inherit from the parent when possible.	foreach ( $defaults as $dkey => $dvalue ) {	if ( isset( $queries[ $dkey ] ) ) {	continue;	}	if ( isset( $parent_query[ $dkey ] ) ) {	$queries[ $dkey ] = $parent_query[ $dkey ];	} else {	$queries[ $dkey ] = $dvalue;	}	}	// Validate the dates passed in the query.	if ( $this->is_first_order_clause( $queries ) ) {	$this->validate_date_values( $queries );	}	// Sanitize the relation parameter.	$queries['relation'] = $this->sanitize_relation( $queries['relation'] );	foreach ( $queries as $key => $q ) {	if ( ! is_array( $q ) || in_array( $key, $this->time_keys, true ) ) {	// This is a first-order query. Trust the values and sanitize when building SQL.	$cleaned_query[ $key ] = $q;	} else {	// Any array without a time key is another query, so we recurse.	$cleaned_query[] = $this->sanitize_query( $q, $queries );	}	}	return $cleaned_query; } 

Changelog

VersionDescription
4.1.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.