meta query - markhowellsmead/helpers GitHub Wiki

See also tax_query.

Make sure that the array is two levels deep.

Get posts by meta key

'meta_query' => [
	[
		'key' => 'sht_related_teammember',
		'value' => $teammember_id,
		'compare' => '=' // optional if 'equals'
	]
],

Only posts which have start date today or in the future

Add with pre_get_posts action. Usage of wp_date requires WP 5.3.0+.

public function checkStartDate($query)
{
	if (!is_admin() && isset($query->query_vars['post_type']) && $query->query_vars['post_type'] === 'sht_event') {

		$meta_query = $query->get('meta_query');

		if (!is_array($meta_query)) {
			$meta_query = [];
		}

		$meta_query[] = [
			[
				'key' => 'start-date',
				'compare' => '>=',
				'value' => wp_date('Y-m-d'),
				'type' => 'DATE'
			]
		];

		$query->set('meta_query', $meta_query);
	}
}

Current and future events

$meta_query = $query->get('meta_query');

if (!is_array($meta_query)) {
	$meta_query = [];
}

$meta_query = [
	'relation' => 'OR',
	[
		'key' => 'date_to',
		'value' => time(),
		'compare' => '>'
	],
	[
		'relation' => 'OR',
		[
			'key' => 'date_to',
			'compare' => 'NOT EXISTS'
		],
		[
			'key' => 'date_from',
			'value' => time(),
			'compare' => '>='
		]
	]
];

$query->set('meta_query', $meta_query);