plugin = 'sportspress/sportspress.php'; add_action( 'admin_menu', array( $this, 'admin_menus' ) ); add_action( 'admin_head', array( $this, 'admin_head' ) ); add_action( 'admin_init', array( $this, 'welcome' ) ); } /** * Add admin menus/screens * * @access public * @return void */ public function admin_menus() { if ( empty( $_GET['page'] ) ) { return; } $welcome_page_name = esc_attr__( 'About SportsPress', 'sportspress' ); $welcome_page_title = esc_attr__( 'Welcome to SportsPress', 'sportspress' ); switch ( $_GET['page'] ) { case 'sp-about': $page = add_dashboard_page( $welcome_page_title, $welcome_page_name, 'manage_options', 'sp-about', array( $this, 'about_screen' ) ); add_action( 'admin_print_styles-' . $page, array( $this, 'admin_css' ) ); break; case 'sp-credits': $page = add_dashboard_page( $welcome_page_title, $welcome_page_name, 'manage_options', 'sp-credits', array( $this, 'credits_screen' ) ); add_action( 'admin_print_styles-' . $page, array( $this, 'admin_css' ) ); break; case 'sp-translators': $page = add_dashboard_page( $welcome_page_title, $welcome_page_name, 'manage_options', 'sp-translators', array( $this, 'translators_screen' ) ); add_action( 'admin_print_styles-' . $page, array( $this, 'admin_css' ) ); break; } } /** * admin_css function. * * @access public * @return void */ public function admin_css() { wp_enqueue_style( 'sportspress-activation', plugins_url( '/assets/css/activation.css', SP_PLUGIN_FILE ), array(), SP_VERSION ); } /** * Add styles just for this page, and remove dashboard page links. * * @access public * @return void */ public function admin_head() { remove_submenu_page( 'index.php', 'sp-about' ); remove_submenu_page( 'index.php', 'sp-credits' ); remove_submenu_page( 'index.php', 'sp-translators' ); } /** * Into text/links shown on all about pages. * * @access private * @return void */ private function intro() { // Flush after upgrades if ( ! empty( $_GET['sp-updated'] ) || ! empty( $_GET['sp-installed'] ) ) { flush_rewrite_rules(); } // Get major version number $version = explode( '.', SP()->version, 3 ); unset( $version[2] ); $display_version = implode( '.', $version ); ?>

' ) ); ?>

version ) ); ?>
Tweet

intro(); ?>

New Features 🌟

Screenshot

Conditional Equations

Use the newly introduced conditional operators >, <, , , , and to calculate the relationship between variables, then insert that calculation into more complex equations. Visit the Configure page to edit variables and equations.

Screenshot

Event Specs

Measure and display additional details per event using the new Event Specs variables. They are customizable and can be useful for keeping track of information like player of the match, attendance, and venue weather.

Screenshot

Next Team Column

Provide a quick overview of who each team is playing next using the new Next Team preset for league table columns. This will automatically display the next team's name or logo that links to the next match for each team in the table.


SportsPress Pro Updates 🏆

Results Matrix

Results Matrix

Display matches between home and away team in a grid. Create or select an existing calendar and select the Matrix layout to convert the calendar to an interactive results matrix!

Midseason Transfers

Midseason Transfers

Keep track of players that switched teams during a season by adding one or more extra rows to their statistics table. Display the team and partial statistics before and after the transfer.

Vertical Timelines

Vertical Timelines

Display a match commentary style play-by-play timeline within events. Upgrade to SportsPress Pro to get access to Timelines and other pro features.


Player Data Improvements

Player Assignments

Players will now be saved using a new data format that allows them to belong to multiple leagues, seasons, and teams and be accurately selected in player lists.

Current Team Column

The Team column in player lists will now display only the current team that player belongs to, determined by the Current Team setting of each player.

Squad Number Zero

It's now possible to import players with the squad number 0 (zero) or any other value that would previously be interpreted as empty.


Other Notes

Countdown Images

A new option has been added to the Countdown widget, allowing you to display a featured image from the next event.

Relative Date in Shortcodes

You'll now be able to select a relative date range when inserting calendar-related shortcodes from the visual editor.

Short Names

Teams have been given a Short Name setting in addition to the existing Abbreviation for added customizability.

intro(); ?>

Contribute to SportsPress.', 'sportspress' ) ), 'https://github.com/ThemeBoy/SportsPress/blob/master/CONTRIBUTING.md' ); ?>

contributors() ); ?>
intro(); ?>

Translate SportsPress.', 'sportspress' ) ), 'https://translate.wordpress.org/projects/wp-plugins/sportspress' ); ?>

get_contributors(); if ( empty( $contributors ) ) { return ''; } $contributor_list = ''; return $contributor_list; } /** * Retrieve list of contributors from GitHub. * * @access public * @return mixed */ public function get_contributors() { $contributors = get_transient( 'sportspress_contributors' ); if ( false !== $contributors ) { return $contributors; } $response = wp_remote_get( 'https://api.github.com/repos/ThemeBoy/SportsPress/contributors', array( 'sslverify' => false ) ); if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) { return array(); } $contributors = json_decode( wp_remote_retrieve_body( $response ) ); if ( ! is_array( $contributors ) ) { return array(); } set_transient( 'sportspress_contributors', $contributors, HOUR_IN_SECONDS ); return $contributors; } /** * Sends user to the welcome page on first activation */ public function welcome() { // Bail if no activation redirect transient is set if ( ! get_transient( '_sp_activation_redirect' ) ) { return; } // Delete the redirect transient delete_transient( '_sp_activation_redirect' ); // Bail if we are waiting to install or update via the interface update/install links if ( get_option( '_sp_needs_update' ) == 1 || get_option( '_sp_needs_pages' ) == 1 ) { return; } // Bail if activating from network, or bulk, or within an iFrame if ( is_network_admin() || isset( $_GET['activate-multi'] ) || defined( 'IFRAME_REQUEST' ) ) { return; } if ( ( isset( $_GET['action'] ) && 'upgrade-plugin' == sanitize_key( $_GET['action'] ) ) && ( isset( $_GET['plugin'] ) && strstr( $_GET['plugin'], 'sportspress.php' ) ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput return; } if ( ! get_option( 'sportspress_completed_setup' ) ) { wp_redirect( admin_url( 'admin.php?page=sp-setup' ) ); exit; } wp_redirect( admin_url( 'index.php?page=sp-about' ) ); exit; } } new SP_Admin_Welcome();