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';