Add order setting to taxonomies

This commit is contained in:
Brian Miyaji
2017-11-13 23:45:03 +11:00
parent bfd32a079f
commit 191896c55d
10 changed files with 266 additions and 30 deletions

View File

@@ -19,6 +19,14 @@ class SP_Admin_Taxonomies {
*/
public function __construct() {
// Add league field
add_action( 'sp_league_edit_form_fields', array( $this, 'edit_taxonomy_fields' ), 10, 1 );
add_action( 'edited_sp_league', array( $this, 'save_fields' ), 10, 1 );
// Add season field
add_action( 'sp_season_edit_form_fields', array( $this, 'edit_taxonomy_fields' ), 10, 1 );
add_action( 'edited_sp_season', array( $this, 'save_fields' ), 10, 1 );
// Add venue field
add_action( 'sp_venue_add_form_fields', array( $this, 'add_venue_fields' ) );
add_action( 'sp_venue_edit_form_fields', array( $this, 'edit_venue_fields' ), 10, 1 );
@@ -31,9 +39,13 @@ class SP_Admin_Taxonomies {
add_action( 'edited_sp_position', array( $this, 'save_fields' ), 10, 1 );
add_action( 'create_sp_position', array( $this, 'save_fields' ), 10, 1 );
// Change league and season columns
// Change league columns
add_filter( 'manage_edit-sp_league_columns', array( $this, 'taxonomy_columns' ) );
add_filter( 'manage_sp_league_custom_column', array( $this, 'column_value' ), 10, 3 );
// Change league columns
add_filter( 'manage_edit-sp_season_columns', array( $this, 'taxonomy_columns' ) );
add_filter( 'manage_sp_season_custom_column', array( $this, 'column_value' ), 10, 3 );
// Change venue columns
add_filter( 'manage_edit-sp_venue_columns', array( $this, 'venue_columns' ) );
@@ -42,9 +54,25 @@ class SP_Admin_Taxonomies {
// Change position columns
add_filter( 'manage_edit-sp_position_columns', array( $this, 'position_columns' ) );
add_filter( 'manage_sp_position_custom_column', array( $this, 'column_value' ), 10, 3 );
}
// Change role columns
add_filter( 'manage_edit-sp_role_columns', array( $this, 'role_columns' ) );
/**
* Edit league/season fields.
*
* @access public
* @param mixed $term Term (category) being edited
*/
public function edit_taxonomy_fields( $term ) {
$t_id = $term->term_id;
?>
<?php if ( function_exists( 'get_term_meta' ) ) { ?>
<?php $order = get_term_meta( $t_id, 'sp_order', true ); ?>
<tr class="form-field">
<th scope="row" valign="top"><label for="sp_order"><?php _e( 'Order', 'sportspress' ); ?></label></th>
<td><input name="sp_order" class="sp-number-input" type="text" step="1" size="4" id="sp_order" value="<?php echo (int) $order; ?>"></td>
</tr>
<?php } ?>
<?php
}
/**
@@ -169,8 +197,13 @@ class SP_Admin_Taxonomies {
</select>
</td>
</tr>
</div>
<?php if ( function_exists( 'get_term_meta' ) ) { ?>
<?php $order = get_term_meta( $t_id, 'sp_order', true ); ?>
<tr class="form-field">
<th scope="row" valign="top"><label for="sp_order"><?php _e( 'Order', 'sportspress' ); ?></label></th>
<td><input name="sp_order" class="sp-number-input" type="text" step="1" size="4" id="sp_order" value="<?php echo (int) $order; ?>"></td>
</tr>
<?php } ?>
<?php
}
@@ -193,6 +226,9 @@ class SP_Admin_Taxonomies {
}
update_option( "taxonomy_$t_id", $term_meta );
}
if ( function_exists( 'add_term_meta' ) ) {
update_term_meta( $term_id, 'sp_order', (int) sp_array_value( $_POST, 'sp_order', 0 ) );
}
}
/**
@@ -203,8 +239,15 @@ class SP_Admin_Taxonomies {
* @return array
*/
public function taxonomy_columns( $columns ) {
$columns['posts'] = __( 'Events', 'sportspress' );
return $columns;
$new_columns = array();
if ( function_exists( 'get_term_meta' ) ) $new_columns['sp_order'] = __( 'Order', 'sportspress' );
$new_columns['posts'] = $columns['posts'];
unset( $columns['posts'] );
return array_merge( $columns, $new_columns );
}
/**
@@ -217,7 +260,7 @@ class SP_Admin_Taxonomies {
public function venue_columns( $columns ) {
$new_columns = array();
$new_columns['sp_address'] = __( 'Address', 'sportspress' );
$new_columns['posts'] = __( 'Events', 'sportspress' );
$new_columns['posts'] = $columns['posts'];
unset( $columns['description'] );
unset( $columns['slug'] );
@@ -236,7 +279,9 @@ class SP_Admin_Taxonomies {
public function position_columns( $columns ) {
$new_columns = array();
$new_columns['sp_sections'] = __( 'Statistics', 'sportspress' );
$new_columns['posts'] = __( 'Players', 'sportspress' );
if ( function_exists( 'get_term_meta' ) ) $new_columns['sp_order'] = __( 'Order', 'sportspress' );
$new_columns['posts'] = $columns['posts'];
unset( $columns['description'] );
unset( $columns['slug'] );
@@ -245,18 +290,6 @@ class SP_Admin_Taxonomies {
return array_merge( $columns, $new_columns );
}
/**
* Posts column changed to Staff in admin.
*
* @access public
* @param mixed $columns
* @return array
*/
public function role_columns( $columns ) {
$columns['posts'] = __( 'Staff', 'sportspress' );
return $columns;
}
/**
* Column value added to category admin.
*
@@ -294,6 +327,10 @@ class SP_Admin_Taxonomies {
$columns .= implode( ', ', $section_names );
} elseif ( $column == 'sp_order' ) {
$columns = (int) get_term_meta( $id, 'sp_order', true );
}
return $columns;

View File

@@ -23,7 +23,18 @@ class SP_Meta_Box_Event_Officials {
$duties = get_terms( array(
'taxonomy' => 'sp_duty',
'hide_empty' => false,
'orderby' => 'slug',
'orderby' => 'meta_value_num',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'sp_order',
'compare' => 'NOT EXISTS'
),
array(
'key' => 'sp_order',
'compare' => 'EXISTS'
),
),
) );
$officials = (array) get_post_meta( $post->ID, 'sp_officials', true );

View File

@@ -414,7 +414,18 @@ class SP_Meta_Box_Event_Performance {
'taxonomy' => 'sp_position',
'name' => 'sp_players[' . $team_id . '][' . $player_id . '][position][]',
'values' => 'term_id',
'orderby' => 'slug',
'orderby' => 'meta_value_num',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'sp_order',
'compare' => 'NOT EXISTS'
),
array(
'key' => 'sp_order',
'compare' => 'EXISTS'
),
),
'selected' => $selected,
'class' => 'sp-position',
'property' => 'multiple',

View File

@@ -129,7 +129,18 @@ class SP_Meta_Box_List_Data {
'name' => 'sp_players[' . $player_id . '][position]',
'show_option_blank' => __( '(Auto)', 'sportspress' ),
'values' => 'term_id',
'orderby' => 'slug',
'orderby' => 'meta_value_num',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'sp_order',
'compare' => 'NOT EXISTS'
),
array(
'key' => 'sp_order',
'compare' => 'EXISTS'
),
),
'selected' => $selected,
'include_children' => ( 'no' == get_option( 'sportspress_event_hide_child_positions', 'no' ) ),
);