Я разработал плагин для отправки формы и отображения таблицы данных. Я хочу сортировать поля таблицы, нажимая на заголовки таблиц.
Ниже приведен код в моих плагинах, функции. php file, am вызов функции Jigsaw::sort_column
для ее передачи
<?php
require_once WP_CONTENT_DIR . '/plugins/jigsaw/jigsaw.php';
Jigsaw::remove_column('ps-iec-submissions', 'Form');
Jigsaw::remove_column('ps-iec-submissions', 'Date');
Jigsaw::remove_column('ps-iec-submissions', 'Expires');
Jigsaw::add_column('ps-iec-submissions', 'First Name', function($post_id){
echo get_post_meta($post_id, 'Name_first', $order = 1);
});
Jigsaw::add_column('ps-iec-submissions', 'Last Name', function($post_id){
echo get_post_meta($post_id, 'Name_last', $order = 2);
});
Jigsaw::add_column('ps-iec-submissions', 'Application Type', function($post_id){
echo get_post_meta($post_id, 'Application_Type', $order = 3);
});
Jigsaw::add_column('ps-iec-submissions', 'Assessed for Apprenticeship', function($post_id){
echo get_post_meta($post_id, 'Experience_Level', $order = 4);
});
Jigsaw::add_column('ps-iec-submissions', 'Zip Code', function($post_id){
echo get_post_meta($post_id, 'Zip_Code', $order = 6);
});
Jigsaw::add_column('ps-iec-submissions', 'Under Consideration', function($post_id){
echo get_post_meta($post_id, 'Under_Consideration', $order = 7);
});
Jigsaw::add_column('ps-iec-submissions', 'Notes', function($post_id){
echo get_post_meta($post_id, 'Notes2', $order = 5);
});
Jigsaw::sort_column('ps-iec-submissions', 'First Name', 'Name_first', false);
Jigsaw::sort_column('ps-iec-submissions', 'Last Name', 'Name_last', false);
Jigsaw::sort_column('ps-iec-submissions', 'Application Type', 'Application_Type', false);
Jigsaw::sort_column('ps-iec-submissions', 'Assessed for Apprenticeship', 'Experience_Level', false);
Jigsaw::sort_column('ps-iec-submissions', 'Zip Code', 'Zip_Code', true);
Jigsaw::sort_column('ps-iec-submissions', 'Notes', 'Notes2', true);
Jigsaw::sort_column('ps-iec-submissions', 'Under Consideration', 'Under_Consideration', false);
#line 598 - edited 4.13.18 by GDR - <td>'.$postdata['Primary_Phone'][0].'</td>
#line 602 - edited 4.13.18 by GDR - <td>'.$postdata['Secondary_Phone'][0].'</td>
?>
Ниже приведен код в Jigsaw. php file
public static function sort_column( $post_types, $label, $meta_key = null, $numeric = false ) {
if ( !is_array( $post_types ) ) {
$post_types = array( $post_types );
}
$key = sanitize_title( $label );
if ( is_null($meta_key) ) {
$meta_key = $key;
}
foreach ( $post_types as $post_type ) {
add_filter( 'manage_edit-'.$post_type.'_sortable_columns', function($cols) use ( $key, $meta_key ) {
$cols[$key] = $meta_key;
return $cols;
} );
add_action( 'pre_get_posts', function ( $query ) use ( $key, $meta_key, $numeric ) {
if( ! is_admin() )
return;
$orderby = $query->get( 'orderby' );
if( $key == $orderby ) {
$query->set('meta_key', $meta_key );
if ( $numeric ) {
$query->set('orderby','meta_value_num');
}
}
});
}
}
public static function remove_column( $post_types, $columns ) {
if ( !is_array( $post_types ) ) {
$post_types = array( $post_types );
}
if ( !is_array( $columns ) ) {
$columns = array( $columns );
}
foreach ( $post_types as $post_type ) {
add_action( 'manage_edit-'.$post_type.'_columns', function( $column_headers ) use ( $columns ) {
foreach ( $columns as $column ) {
unset( $column_headers[$column] );
unset( $column_headers[strtolower( $column )] );
}
return $column_headers;
} );
}
}
Я не понимаю, почему он не сортируется и не получает никаких ошибок в console.
Ниже приведен код для сортировки в функциях. php
//sort column alphabetically
add_action( 'pre_get_posts', 'my_slice_orderby' );
function my_slice_orderby( $query ) {
if( ! is_admin() )
return;
$orderby = $query->get( 'orderby');
if( 'first-name' == $orderby ) {
$query->set('meta_key','Name_first');
$query->set('orderby','meta_value');
}else if( 'last-name' == $orderby ) {
$query->set('meta_key','Name_last');
$query->set('orderby','meta_value');
}else if( 'application-type' == $orderby ) {
$query->set('meta_key','Application_Type');
$query->set('orderby','meta_value');
}else if( 'assessed-for-apprenticeship' == $orderby ) {
$query->set('meta_key','Experience_Level');
$query->set('orderby','meta_value');
}
}