diff --git a/includes/admin/core/class-admin-builder.php b/includes/admin/core/class-admin-builder.php index 9b327359..cfad932d 100644 --- a/includes/admin/core/class-admin-builder.php +++ b/includes/admin/core/class-admin-builder.php @@ -333,33 +333,32 @@ if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) { die; } - /** - * Sort array function + * Sort sub-row fields by position. + * Callback for `uasort()` function * - * @param array $arr - * @param string $col - * @param int $dir + * @param array $a Array item. + * @param array $b Array item. * - * @return array + * @return int */ - function array_sort_by_column( $arr, $col, $dir = SORT_ASC ) { - $sort_col = array(); - - foreach ( $arr as $key => $row ) { - if ( ! empty( $row[ $col ] ) ) { - $sort_col[ $key ] = $row[ $col ]; - } + public function sorting_fields_by_position( $a, $b ) { + if ( empty( $a['position'] ) ) { + $a['position'] = 0; } - if ( ! empty( $sort_col ) ) { - array_multisort( $sort_col, $dir, $arr ); + if ( empty( $b['position'] ) ) { + $b['position'] = 0; } + $a['position'] = absint( $a['position'] ); + $b['position'] = absint( $b['position'] ); - return $arr; + if ( $a['position'] === $b['position'] ) { + return 0; + } + return ( $a['position'] < $b['position'] ) ? -1 : 1; } - /** * Get fields in row * @@ -523,7 +522,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) {