如何使用户管理屏幕上的自定义列可排序?

时间:2016-08-03 作者:Jordan Rogers

我正在向用户管理屏幕添加一个附加列,以显示每个用户的公司。我已经成功地将此列显示在表中,但我真的很难将其按字母顺序排序。

列标题似乎被激活为可排序,但如果我单击它来重新组织列表顺序,表实际上会根据用户名而不是公司按字母顺序重新排列。

我花了很多时间在网上寻找和调整其他解决方案,但仍然没有成功。我已经看到了很多为post类型的admins屏幕而不是用户admin屏幕进行自定义列排序的示例。

下面是我当前用于在用户管理屏幕上生成“Company”列的代码,它正在引入作者元数据“Company”。

//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 );

2 个回复
SO网友:ban-geoengineering

这是我的代码,它添加了一个可排序的自定义列(称为Vendor ID) 到用户表:

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\' );
简单,对我来说很好。

SO网友:mmm

行动request 使用post。对于用户来说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);

相关推荐

添加用户角色:预先保存在User-Meta中[已解决]

我在用户注册后添加一个操作,以根据users meta\\u值添加另一个用户角色。使用时:add_action(\'um_after_save_registration_details\', \'custom_after_new_user_register\', 10, 2); function custom_after_new_user_register($user_id) { $user = get_user_by(\'id\', $user_id); if