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 = __( 'About SportsPress', 'sportspress' ); $welcome_page_title = __( '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 🌟

Officials Module

Officials Module

Manage referees, umpires, judges, timekeepers, and other officials. Don't forget to enable the Officials module from SportsPress Settings to start using this feature.

Player of the Match

Player of the Match

Select player(s) or a star number for certain players in events. Stars can be displayed as icons or with a number. To enable this feature, choose an Awards type from the Box Score section in Event Settings.

Box Score Importer

Box Score Importer

A new importer has been added to each event. Upload a CSV file and instantly update the player performance for the selected team.

New Performance Icons

New Performance Icons

A set of new icons have been added to Player Performance, giving you more options to choose from.


SportsPress Pro Updates 🏆

Tournament Group Stages

Tournament Group Stages

Support for group stages have been added natively to tournaments, allowing you to create and attach league tables to be displayed directly below tournament brackets.

Sponsorship Levels

Sponsorship Levels

Assign levels to sponsors based on their contribution or other factors. Sponsors can now be filtered based on their sponsorship level within widgets, allowing for level-specific sponsor treament.


Improved Usability and Control

Custom Taxonomy Order

A new setting has been added to leagues, seasons, and positions, allowing you to define a customer order of terms.

Filtering Player Lists

Player lists can now be configured to skip players that don't have a particular statistic, allowing you to create more specific lists.

Multiple Jobs

Staff members can now be assigned multiple jobs, which are displayed consecutively in their profiles.

Event Calendar Indicators

With the frontend stylesheet enabled, days with events will now be displayed with a filled circle to indicate an event on that day.

Relative Ranges

Additional options now allow you to select events within a particular range, from last week, next week, yesterday, or tomorrow.

Sort by Match Day

Use the columns in the admin to sort events by match day. A search bar has also been added to filter events by match day.


Other Notes

Schema Microdata

We've complied with schema.org's microdata formats by adding these attributes to event calendars, blocks, and lists throughout.

Competitions Are Now Leagues

The competitions taxonomy has been renamed to leagues, which still work in the exact same way.

Calendar Caching

To prevent event calendars from caching in third-party apps, an E-Tag header has been added to these feeds.

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' == $_GET['action'] ) && ( isset( $_GET['plugin'] ) && strstr( $_GET['plugin'], 'sportspress.php' ) ) ) 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();