WP_Date_Query::__construct()publicWP 3.7.0

Constructor.

Time-related parameters that normally require integer values ('year', 'month', 'week', 'dayofyear', 'day', 'dayofweek', 'dayofweek_iso', 'hour', 'minute', 'second') accept arrays of integers for some values of 'compare'. When 'compare' is 'IN' or 'NOT IN', arrays are accepted; when 'compare' is 'BETWEEN' or 'NOT BETWEEN', arrays of two valid values are required. See individual argument descriptions for accepted values.

Method of the class: WP_Date_Query{}

No Hooks.

Return

null. Nothing (null).

Usage

$WP_Date_Query = new WP_Date_Query();
$WP_Date_Query->__construct( $date_query, $default_column );
$date_query(array) (required)

Array of date query clauses.

  • ...$0(array)

    • column(string)
      Optional. The column to query against. If undefined, inherits the value of the $default_column parameter. See WP_Date_Query::validate_column() and the {@see 'date_query_valid_columns'} filter for the list of accepted values.
      Default: 'post_date'

    • compare(string)
      Optional. The comparison operator. Accepts '=', '!=', '>', '>=', '<', '<=', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN'.
      Default: '='

    • relation(string)
      Optional. The boolean relationship between the date queries. Accepts 'OR' or 'AND'.
      Default: 'OR'

    • ...$0(array)
      Optional. An array of first-order clause parameters, or another fully-formed date query.

      • before(string|array)
        Optional. Date to retrieve posts before. Accepts strtotime()-compatible string, or array of 'year', 'month', 'day' values.

        • year(string)
          The four-digit year. Accepts any four-digit year.
          Default: ''

        • month(string)
          Optional when passing array.The month of the year. Accepts numbers 1-12.
          Default: (string:empty)|(array:1)

        • day(string)
          Optional when passing array.The day of the month. Accepts numbers 1-31.
          Default: (string:empty)|(array:1)
      • after(string|array)
        Optional. Date to retrieve posts after. Accepts strtotime()-compatible string, or array of 'year', 'month', 'day' values.

        • year(string)
          The four-digit year. Accepts any four-digit year.
          Default: ''

        • month(string)
          Optional when passing array. The month of the year. Accepts numbers 1-12.
          Default: (string:empty)|(array:12)

        • day(string)
          Optional when passing array.The day of the month. Accepts numbers 1-31.
          Default: (string:empty)|(array:last day of month)
      • column(string)
        Optional. Used to add a clause comparing a column other than the column specified in the top-level $column parameter. See WP_Date_Query::validate_column() and the {@see 'date_query_valid_columns'} filter for the list of accepted values.
        Default: value of top-level $column

      • compare(string)
        Optional. The comparison operator. Accepts '=', '!=', '>', '>=', '<', '<=', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN'. 'IN', 'NOT IN', 'BETWEEN', and 'NOT BETWEEN'. Comparisons support arrays in some time-related parameters.
        Default: '='

      • inclusive(true|false)
        Optional. Include results from dates specified in 'before' or 'after'.
        Default: false

      • year(int|int[])
        Optional. The four-digit year number. Accepts any four-digit year or an array of years if $compare supports it.
        Default: ''

      • month(int|int[])
        Optional. The two-digit month number. Accepts numbers 1-12 or an array of valid numbers if $compare supports it.
        Default: ''

      • week(int|int[])
        Optional. The week number of the year. Accepts numbers 0-53 or an array of valid numbers if $compare supports it.
        Default: ''

      • dayofyear(int|int[])
        Optional. The day number of the year. Accepts numbers 1-366 or an array of valid numbers if $compare supports it.

      • day(int|int[])
        Optional. The day of the month. Accepts numbers 1-31 or an array of valid numbers if $compare supports it.
        Default: ''

      • dayofweek(int|int[])
        Optional. The day number of the week. Accepts numbers 1-7 (1 is Sunday) or an array of valid numbers if $compare supports it.
        Default: ''

      • dayofweek_iso(int|int[])
        Optional. The day number of the week (ISO). Accepts numbers 1-7 (1 is Monday) or an array of valid numbers if $compare supports it.
        Default: ''

      • hour(int|int[])
        Optional. The hour of the day. Accepts numbers 0-23 or an array of valid numbers if $compare supports it.
        Default: ''

      • minute(int|int[])
        Optional. The minute of the hour. Accepts numbers 0-59 or an array of valid numbers if $compare supports it.
        Default: ''

      • second(int|int[])
        Optional. The second of the minute. Accepts numbers 0-59 or an array of valid numbers if $compare supports it.
        Default: ''
$default_column(string)
See WP_Date_Query::validate_column() and the date_query_valid_columns filter for the list of accepted values. Default 'post_date'.
Default: column to query against

Changelog

Since 3.7.0 Introduced.
Since 4.0.0 The $inclusive logic was updated to include all times within the date range.
Since 4.1.0 Introduced 'dayofweek_iso' time type parameter.

WP_Date_Query::__construct() code WP 6.5.2

public function __construct( $date_query, $default_column = 'post_date' ) {
	if ( empty( $date_query ) || ! is_array( $date_query ) ) {
		return;
	}

	if ( isset( $date_query['relation'] ) ) {
		$this->relation = $this->sanitize_relation( $date_query['relation'] );
	} else {
		$this->relation = 'AND';
	}

	// Support for passing time-based keys in the top level of the $date_query array.
	if ( ! isset( $date_query[0] ) ) {
		$date_query = array( $date_query );
	}

	if ( ! empty( $date_query['column'] ) ) {
		$date_query['column'] = esc_sql( $date_query['column'] );
	} else {
		$date_query['column'] = esc_sql( $default_column );
	}

	$this->column = $this->validate_column( $this->column );

	$this->compare = $this->get_compare( $date_query );

	$this->queries = $this->sanitize_query( $date_query );
}