Wordpress сортировка пользовательских таблиц не работает - PullRequest
0 голосов
/ 27 февраля 2020

Я разработал плагин для отправки формы и отображения таблицы данных. Я хочу сортировать поля таблицы, нажимая на заголовки таблиц.

Ниже приведен код в моих плагинах, функции. 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');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...