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.
Return
(array) The IDs of sessions if found, empty array otherwise.
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;
}
Changelog
| Version | Description |
|---|---|
| 1.1.0 | Introduced. |