Como tornar uma coluna personalizada na tela de administração dos usuários classificável?

4

Estou no processo de adicionar uma coluna adicional à tela de administração de usuários para exibir a empresa para cada usuário. Tenho tido sucesso em mostrar essa coluna na tabela, mas estou realmente lutando para que ela seja ordenada alfabeticamente.

O cabeçalho da coluna parece ser ativado como classificável, mas se eu clicar nele para reorganizar a ordem da lista, a tabela realmente se reorganiza em ordem alfabética com base no nome de usuário em oposição à empresa.

Eu passei muito tempo na Web procurando e adaptando outras soluções, mas ainda sem sorte. Tenho visto muitos exemplos de como classificar colunas personalizadas para telas de administradores de tipo de postagem, mas não a tela de administração de usuários.

Abaixo está o código que estou usando atualmente para gerar uma coluna "Empresa" na tela de administração de usuários e está obtendo os "metadados" de autor "empresa".

//MAKE THE COLUMN SORTABLE

function user_sortable_columns( $columns ) {
    $columns['company'] = 'Company';
    return $columns;
}

add_filter( 'manage_users_sortable_columns', 'user_sortable_columns' );

add_action( "pre_get_users", function ( $WP_User_Query ) {

if ( isset( $WP_User_Query->query_vars["orderby"] )
    && ( "company" === $WP_User_Query->query_vars["orderby"] )
) {
    $WP_User_Query->query_vars["meta_key"] = "company_name";
    $WP_User_Query->query_vars["orderby"] = "meta_value";
}

}, 10, 1 );
    
por Jordan Rogers 03.08.2016 / 10:56

2 respostas

1

Este é o meu código que adiciona uma coluna personalizada classificável (chamada ID do fornecedor ) à tabela de usuários:

function fc_new_modify_user_table( $column ) {
    $column['vendor_id'] = 'Vendor ID';
    return $column;
}
add_filter( 'manage_users_columns', 'fc_new_modify_user_table' );

function fc_new_modify_user_table_row( $val, $column_name, $user_id ) {
    switch ($column_name) {
        case 'vendor_id' :
            return get_the_author_meta( 'vendor_id', $user_id );
        default:
    }
    return $val;
}
add_filter( 'manage_users_custom_column', 'fc_new_modify_user_table_row', 10, 3 );

function fc_my_sortable_cake_column( $columns ) {
    $columns['vendor_id'] = 'Vendor ID';

    //To make a column 'un-sortable' remove it from the array unset($columns['date']);

    return $columns;
}
add_filter( 'manage_users_sortable_columns', 'fc_my_sortable_cake_column' );

Simples e funciona bem para mim.

    
por ban-geoengineering 21.02.2018 / 20:38
0

a ação request funciona com a postagem. para o usuário é pre_get_users :

add_action("pre_get_users", function ($WP_User_Query) {

    if (    isset($WP_User_Query->query_vars["orderby"])
        &&  ("company" === $WP_User_Query->query_vars["orderby"])
    ) {
        $WP_User_Query->query_vars["meta_key"] = "company_name";
        $WP_User_Query->query_vars["orderby"] = "meta_value";
    }

}, 10, 1);
    
por mmm 03.08.2016 / 14:46