diff --git a/assets/css/sportspress.css b/assets/css/sportspress.css index 203a8570..9acc5750 100644 --- a/assets/css/sportspress.css +++ b/assets/css/sportspress.css @@ -23,6 +23,10 @@ .sp-template { margin-bottom: 1.5em; } +.sp-template-dropdown { + clear: both; + overflow: hidden; +} .sp-template-logo, .sp-template-photo { float: left; diff --git a/includes/admin/settings/class-sp-settings-players.php b/includes/admin/settings/class-sp-settings-players.php index 802b43bf..9c8242a2 100644 --- a/includes/admin/settings/class-sp-settings-players.php +++ b/includes/admin/settings/class-sp-settings-players.php @@ -59,14 +59,6 @@ class SP_Settings_Players extends SP_Settings_Page { 'type' => 'checkbox', ), - array( - 'title' => __( 'Dropdown', 'sportspress' ), - 'desc' => __( 'Display dropdown', 'sportspress' ), - 'id' => 'sportspress_player_show_selector', - 'default' => 'yes', - 'type' => 'checkbox', - ), - array( 'title' => __( 'Details', 'sportspress' ), 'desc' => __( 'Squad Number', 'sportspress' ), diff --git a/includes/admin/settings/class-sp-settings-staff.php b/includes/admin/settings/class-sp-settings-staff.php index a7cdfdd3..e97df3b0 100644 --- a/includes/admin/settings/class-sp-settings-staff.php +++ b/includes/admin/settings/class-sp-settings-staff.php @@ -59,14 +59,6 @@ class SP_Settings_Staff extends SP_Settings_Page { 'type' => 'checkbox', ), - array( - 'title' => __( 'Dropdown', 'sportspress' ), - 'desc' => __( 'Display dropdown', 'sportspress' ), - 'id' => 'sportspress_staff_show_selector', - 'default' => 'yes', - 'type' => 'checkbox', - ), - array( 'title' => __( 'Details', 'sportspress' ), 'desc' => __( 'Nationality', 'sportspress' ), diff --git a/includes/class-sp-templates.php b/includes/class-sp-templates.php index 3a95aacb..1c7a6db7 100644 --- a/includes/class-sp-templates.php +++ b/includes/class-sp-templates.php @@ -171,6 +171,12 @@ class SP_Templates { ), 'player' => array_merge( apply_filters( 'sportspress_before_player_template', array( + 'selector' => array( + 'title' => __( 'Dropdown', 'sportspress' ), + 'option' => 'sportspress_player_show_selector', + 'action' => 'sportspress_output_player_selector', + 'default' => 'yes', + ), 'photo' => array( 'title' => __( 'Photo', 'sportspress' ), 'option' => 'sportspress_player_show_photo', @@ -232,6 +238,12 @@ class SP_Templates { ), 'staff' => array_merge( apply_filters( 'sportspress_before_staff_template', array( + 'selector' => array( + 'title' => __( 'Dropdown', 'sportspress' ), + 'option' => 'sportspress_staff_show_selector', + 'action' => 'sportspress_output_staff_selector', + 'default' => 'yes', + ), 'photo' => array( 'title' => __( 'Photo', 'sportspress' ), 'option' => 'sportspress_staff_show_photo', diff --git a/includes/sp-template-functions.php b/includes/sp-template-functions.php index d74ea5fd..d1dfa516 100644 --- a/includes/sp-template-functions.php +++ b/includes/sp-template-functions.php @@ -335,7 +335,20 @@ if ( ! function_exists( 'sportspress_output_league_table' ) ) { /** Single Player ********************************************************/ -if ( ! function_exists( 'sportspress_output_player_photo' ) ) { +if ( ! function_exists( 'sportspress_output_player_selector' ) ) { + + /** + * Output the player dropdown. + * + * @access public + * @subpackage Player/Dropdown + * @return void + */ + function sportspress_output_player_selector() { + sp_get_template( 'player-selector.php' ); + } +} +if ( ! function_exists( 'sportspress_output_player_selector' ) ) { /** * Output the player photo. @@ -398,6 +411,19 @@ if ( ! function_exists( 'sportspress_output_player_list' ) ) { /** Single Staff ********************************************************/ +if ( ! function_exists( 'sportspress_output_staff_selector' ) ) { + + /** + * Output the staff dropdown. + * + * @access public + * @subpackage Staff/Dropdown + * @return void + */ + function sportspress_output_staff_selector() { + sp_get_template( 'staff-selector.php' ); + } +} if ( ! function_exists( 'sportspress_output_staff_photo' ) ) { /** diff --git a/includes/sp-template-hooks.php b/includes/sp-template-hooks.php index 43bb1756..a6b225e0 100644 --- a/includes/sp-template-hooks.php +++ b/includes/sp-template-hooks.php @@ -145,130 +145,12 @@ function sportspress_the_title( $title, $id = null ) { if ( $number != null ): $title = '' . $number . ' ' . $title; endif; - - if ( 'yes' === get_option( 'sportspress_player_show_selector', 'yes' ) ): - $league_ids = sp_get_the_term_ids( $id, 'sp_league' ); - $season_ids = sp_get_the_term_ids( $id, 'sp_season' ); - $team = get_post_meta( $id, 'sp_current_team', true ); - - $args = array( - 'post_type' => 'sp_player', - 'numberposts' => 500, - 'posts_per_page' => 500, - 'meta_key' => 'sp_number', - 'orderby' => 'meta_value_num', - 'order' => 'ASC', - 'tax_query' => array( - 'relation' => 'AND', - ), - ); - - if ( $league_ids ): - $args['tax_query'][] = array( - 'taxonomy' => 'sp_league', - 'field' => 'term_id', - 'terms' => $league_ids - ); - endif; - - if ( $season_ids ): - $args['tax_query'][] = array( - 'taxonomy' => 'sp_season', - 'field' => 'term_id', - 'terms' => $season_ids - ); - endif; - - if ( $team && apply_filters( 'sportspress_has_teams', true ) ): - $args['meta_query'] = array( - array( - 'key' => 'sp_team', - 'value' => $team - ), - ); - endif; - - $players = get_posts( $args ); - - $options = array(); - - if ( $players && is_array( $players ) ): - foreach ( $players as $player ): - $name = $player->post_title; - $number = get_post_meta( $player->ID, 'sp_number', true ); - if ( isset( $number ) && '' !== $number ): - $name = $number . '. ' . $name; - endif; - $options[] = ''; - endforeach; - endif; - - if ( sizeof( $options ) > 1 ): - $title .= ''; - endif; - endif; elseif ( is_singular( 'sp_staff' ) ): $staff = new SP_Staff( $id ); $role = $staff->role(); if ( $role ): $title = '' . $role->name . ' ' . $title; endif; - - if ( 'yes' === get_option( 'sportspress_staff_show_selector', 'yes' ) ): - $league_ids = sp_get_the_term_ids( $id, 'sp_league' ); - $season_ids = sp_get_the_term_ids( $id, 'sp_season' ); - $team = get_post_meta( $id, 'sp_current_team', true ); - - $args = array( - 'post_type' => 'sp_staff', - 'numberposts' => 500, - 'posts_per_page' => 500, - 'orderby' => 'title', - 'order' => 'ASC', - 'tax_query' => array( - 'relation' => 'AND', - ), - ); - - if ( $league_ids ): - $args['tax_query'][] = array( - 'taxonomy' => 'sp_league', - 'field' => 'term_id', - 'terms' => $league_ids - ); - endif; - - if ( $season_ids ): - $args['tax_query'][] = array( - 'taxonomy' => 'sp_season', - 'field' => 'term_id', - 'terms' => $season_ids - ); - endif; - - if ( $team && apply_filters( 'sportspress_has_teams', true ) ): - $args['meta_query'] = array( - array( - 'key' => 'sp_team', - 'value' => $team - ), - ); - endif; - - $staffs = get_posts( $args ); - - $options = array(); - - if ( $staffs && is_array( $staffs ) ): - foreach ( $staffs as $staff ): - $options[] = ''; - endforeach; - endif; - - if ( sizeof( $options ) > 1 ): - $title .= ''; - endif; - endif; endif; endif; diff --git a/templates/player-selector.php b/templates/player-selector.php new file mode 100644 index 00000000..7abe8129 --- /dev/null +++ b/templates/player-selector.php @@ -0,0 +1,80 @@ + 'sp_player', + 'numberposts' => 500, + 'posts_per_page' => 500, + 'meta_key' => 'sp_number', + 'orderby' => 'meta_value_num', + 'order' => 'ASC', + 'tax_query' => array( + 'relation' => 'AND', + ), +); + +if ( $league_ids ): + $args['tax_query'][] = array( + 'taxonomy' => 'sp_league', + 'field' => 'term_id', + 'terms' => $league_ids + ); +endif; + +if ( $season_ids ): + $args['tax_query'][] = array( + 'taxonomy' => 'sp_season', + 'field' => 'term_id', + 'terms' => $season_ids + ); +endif; + +if ( $team && apply_filters( 'sportspress_has_teams', true ) ): + $args['meta_query'] = array( + array( + 'key' => 'sp_team', + 'value' => $team + ), + ); +endif; + +$players = get_posts( $args ); + +$options = array(); + +if ( $players && is_array( $players ) ): + foreach ( $players as $player ): + $name = $player->post_title; + $number = get_post_meta( $player->ID, 'sp_number', true ); + if ( isset( $number ) && '' !== $number ): + $name = $number . '. ' . $name; + endif; + $options[] = ''; + endforeach; +endif; + +if ( sizeof( $options ) > 1 ): + ?> +
+ +
+ 'sp_staff', + 'numberposts' => 500, + 'posts_per_page' => 500, + 'orderby' => 'title', + 'order' => 'ASC', + 'tax_query' => array( + 'relation' => 'AND', + ), +); + +if ( $league_ids ): + $args['tax_query'][] = array( + 'taxonomy' => 'sp_league', + 'field' => 'term_id', + 'terms' => $league_ids + ); +endif; + +if ( $season_ids ): + $args['tax_query'][] = array( + 'taxonomy' => 'sp_season', + 'field' => 'term_id', + 'terms' => $season_ids + ); +endif; + +if ( $team && apply_filters( 'sportspress_has_teams', true ) ): + $args['meta_query'] = array( + array( + 'key' => 'sp_team', + 'value' => $team + ), + ); +endif; + +$staffs = get_posts( $args ); + +$options = array(); + +if ( $staffs && is_array( $staffs ) ): + foreach ( $staffs as $staff ): + $options[] = ''; + endforeach; +endif; + +if ( sizeof( $options ) > 1 ): + ?> +
+ +
+