option_page ) { //redirect only if all the right options are in place $errors = get_settings_errors(); if ( ! empty( $errors ) ) return; //clearing to start-over if ( isset( $_POST['strava_token'] ) && empty( $_POST['strava_token'] ) ) return; $client_id = get_option( 'strava_client_id' ); $client_secret = get_option( 'strava_client_secret' ); if ( $client_id && $client_secret ) { $redirect = admin_url( "options-general.php?page={$this->page_name}" ); $url = "https://www.strava.com/oauth/authorize?client_id={$client_id}&response_type=code&redirect_uri={$redirect}&approval_prompt=force"; wp_redirect( $url ); exit(); } } } public function add_strava_menu() { add_options_page( __( 'Strava Settings', 'wp-strava' ), __( 'Strava', 'wp-strava' ), 'manage_options', $this->page_name, array( $this, 'print_strava_options' ) ); } public function init() { if ( isset( $_GET['page'] ) && $_GET['page'] == $this->page_name && isset( $_GET['code'] ) ) { $token = $this->get_token( $_GET['code'] ); if ( $token ) { add_settings_error( 'strava_token', 'strava_token', sprintf( __( 'New Strava Token Retrieved. %s', 'wp-strava' ), $this->feedback ) , 'updated' ); update_option( 'strava_token', $token ); } else { add_settings_error( 'strava_token', 'strava_token', $this->feedback ); } } $this->token = get_option( 'strava_token' ); } public function register_strava_settings() { $this->init(); add_settings_section( 'strava_api', __( 'Strava API', 'wp-strava' ), array( $this, 'print_api_instructions' ), 'wp-strava' ); //NULL / NULL no section label needed if ( ! $this->token ) { register_setting( $this->option_page, 'strava_client_id', array( $this, 'sanitize_client_id' ) ); register_setting( $this->option_page, 'strava_client_secret', array( $this, 'sanitize_client_secret' ) ); add_settings_field( 'strava_client_id', __( 'Strava Client ID', 'wp-strava' ), array( $this, 'print_client_input' ), 'wp-strava', 'strava_api' ); add_settings_field( 'strava_client_secret', __( 'Strava Client Secret', 'wp-strava' ), array( $this, 'print_secret_input' ), 'wp-strava', 'strava_api' ); } else { register_setting( $this->option_page, 'strava_token', array( $this, 'sanitize_token' ) ); add_settings_field( 'strava_token', __( 'Strava Token', 'wp-strava' ), array( $this, 'print_token_input' ), 'wp-strava', 'strava_api' ); } register_setting( $this->option_page, 'strava_som', array( $this, 'sanitize_som' ) ); add_settings_section( 'strava_options', __( 'Options', 'wp-strava' ), NULL, 'wp-strava' ); add_settings_field( 'strava_som', __( 'System of Measurement', 'wp-strava' ), array( $this, 'print_som_input' ), 'wp-strava', 'strava_options' ); } public function print_api_instructions() { $signup_url = 'http://www.strava.com/developers'; $settings_url = 'https://www.strava.com/settings/api'; $blog_name = get_bloginfo( 'name' ); $app_name = $blog_name . ' Strava'; $url_parts = parse_url( site_url() ); $site_url = $url_parts['host']; //strip http/https for copying/pasting into strava $description = 'WP-Strava for ' . $blog_name; printf( __( "
Steps:
Options