Block::check_for_sessions( array $props )

Check for sessions in ‘tec_session’ post type with ‘_tec_session_time’ post meta.

Utilizes WordPress caching to store results for 1 minute for performance optimization.


Parameters

$props

(array) (Required) An array of attributes from shortcode.


Top ↑

Return

(array) The IDs of sessions if found, empty array otherwise.


Top ↑

Source

File: src/Conference/Editor/Block.php

	public function check_for_sessions( $props ) {
		if ( ! isset( $props['date'] ) || empty( $props['date'] ) ) {
			return [];
		}

		$cache_key = 'sessions_' . md5( wp_json_encode( $props ) );
		$cached    = wp_cache_get( $cache_key );

		if ( $cached !== false ) {
			return $cached;
		}

		$dates       = explode( ',', $props['date'] );
		$session_ids = [];

		// phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_query
		foreach ( $dates as $date ) {
			$args = [
				'post_type'      => Plugin::SESSION_POSTTYPE,
				'posts_per_page' => 10,
				'fields'         => 'ids',
				'meta_query'     => [
					'relation' => 'AND',
					[
						'key'     => '_tec_session_time',
						'compare' => 'EXISTS',
					],
					[
						'key'     => '_tec_session_time',
						'value'   => [
							strtotime( $date ),
							strtotime( $date . ' +1 day' ),
						],
						'compare' => 'BETWEEN',
						'type'    => 'NUMERIC',
					],
				],
			];

			$query = new WP_Query( $args );

			if ( $query->have_posts() ) {
				$session_ids = array_merge( $session_ids, $query->posts );
			}
		}
		// phpcs:enable WordPress.DB.SlowDBQuery.slow_db_query_meta_query

		wp_cache_set( $cache_key, $session_ids, '', 60 );

		return $session_ids;
	}

Top ↑

Changelog

Changelog
Version Description
1.1.0 Introduced.