diff --git a/includes/sp-event-admin-week-filter.php b/includes/sp-event-admin-week-filter.php new file mode 100644 index 0000000..69a8443 --- /dev/null +++ b/includes/sp-event-admin-week-filter.php @@ -0,0 +1,220 @@ + $year, + 'week' => $week, + ); +} + +/** + * Render week filter control in event admin list. + * + * @param string $post_type Current post type. + */ +function tony_sportspress_render_admin_week_filter( $post_type ) { + if ( 'sp_event' !== $post_type ) { + return; + } + + $value = ''; + if ( ! empty( $_GET['sp_week_filter'] ) ) { + $value = sanitize_text_field( wp_unslash( $_GET['sp_week_filter'] ) ); + } + + $summary_text = __( 'Select a week', 'tonys-sportspress-enhancements' ); + $parsed = tony_sportspress_parse_admin_week_filter(); + if ( is_array( $parsed ) ) { + $timezone = wp_timezone(); + $monday = ( new DateTimeImmutable( 'now', $timezone ) )->setISODate( $parsed['year'], $parsed['week'], 1 )->setTime( 0, 0, 0 ); + $sunday = $monday->modify( '+6 days' )->setTime( 23, 59, 59 ); + /* translators: 1: Monday label/date, 2: Sunday label/date. */ + $summary_text = sprintf( + __( '%1$s to %2$s', 'tonys-sportspress-enhancements' ), + wp_date( 'D M j, Y', $monday->getTimestamp(), $timezone ), + wp_date( 'D M j, Y', $sunday->getTimestamp(), $timezone ) + ); + } + ?> + + + + id ) { + return; + } + ?> + + id ) { + return; + } + ?> + + is_main_query() ) { + return; + } + + $post_type = $query->get( 'post_type' ); + if ( 'sp_event' !== $post_type ) { + return; + } + + $parsed = tony_sportspress_parse_admin_week_filter(); + if ( null === $parsed ) { + return; + } + + $timezone = wp_timezone(); + $monday = ( new DateTimeImmutable( 'now', $timezone ) )->setISODate( $parsed['year'], $parsed['week'], 1 )->setTime( 0, 0, 0 ); + $sunday = $monday->modify( '+6 days' )->setTime( 23, 59, 59 ); + + $date_query = $query->get( 'date_query' ); + if ( ! is_array( $date_query ) ) { + $date_query = array(); + } + + $date_query[] = array( + 'after' => array( + 'year' => (int) $monday->format( 'Y' ), + 'month' => (int) $monday->format( 'n' ), + 'day' => (int) $monday->format( 'j' ), + ), + 'before' => array( + 'year' => (int) $sunday->format( 'Y' ), + 'month' => (int) $sunday->format( 'n' ), + 'day' => (int) $sunday->format( 'j' ), + ), + 'inclusive' => true, + ); + + $query->set( 'date_query', $date_query ); +} +add_action( 'pre_get_posts', 'tony_sportspress_apply_admin_week_filter' ); diff --git a/tonys-sportspress-enhancements.php b/tonys-sportspress-enhancements.php index 5145bf5..d6f2685 100644 --- a/tonys-sportspress-enhancements.php +++ b/tonys-sportspress-enhancements.php @@ -16,4 +16,4 @@ // Include other files here require_once plugin_dir_path(__FILE__) . 'includes/open-graph-tags.php'; require_once plugin_dir_path(__FILE__) . 'includes/featured-image-generator.php'; -require_once plugin_dir_path(__FILE__) . 'includes/sp-event-permalink.php'; \ No newline at end of file +require_once plugin_dir_path(__FILE__) . 'includes/sp-event-permalink.php';require_once plugin_dir_path(__FILE__) . 'includes/sp-event-admin-week-filter.php';