WP_Date_Query::sanitize_query()
Recursive-friendly query sanitizer.
Ensures that each query-level clause has a 'relation' key, and that each first-order clause contains all the necessary keys from $defaults.
Метод класса: WP_Date_Query{}
Хуков нет.
Возвращает
Массив
. Sanitized queries.
Использование
$WP_Date_Query = new WP_Date_Query(); $WP_Date_Query->sanitize_query( $queries, $parent_query );
- $queries(массив) (обязательный)
- -
- $parent_query(массив)
- -
По умолчанию: null
Список изменений
С версии 4.1.0 | Введена. |
Код WP_Date_Query::sanitize_query() WP Date Query::sanitize query WP 6.7.1
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; }