使自定义用户表列可筛选

时间:2017-12-27 作者:frank astin

我正在为用户添加一个新的自定义列,如下所示。这将添加行并返回正确的值,即我无法在列表中按行进行筛选或排序的方式。有人能解释一下这是怎么做到的吗?

    function new_modify_user_table( $column ) {
            $column[\'call_sign\'] = \'Call Sign\';
            return $column;
    }
    add_filter( \'manage_users_columns\', \'new_modify_user_table\' );

    function new_modify_user_table_row( $val, $column_name, $user_id ) {
    global $wpdb;
    get_currentuserinfo();

        $level = $wpdb->get_row(\'SELECT * FROM \' . $wpdb->prefix . \'ihc_user_levels WHERE user_id="\' . $user_id . \'";\');
        $level_id = \'\';
        if($level) {
        $level_id = $level->level_id;

        $level_array = $wpdb->get_row(\'SELECT option_value FROM \' . $wpdb->prefix . \'options WHERE option_id="583";\');
        $level_array = unserialize($level_array->option_value);
        $membership_level = $level_array[$level_id][\'label\'];
        } else {
        $membership_level = \'n/a\';
        }


        $expire_date = date(\'d/m/Y\', strtotime($level->expire_time) ) ;

        switch ($column_name) {
            case \'call_sign\' :
                return (!empty(get_the_author_meta( \'call_sign\', $user_id )) ? get_the_author_meta( \'call_sign\', $user_id ): \'n/a\');
                break;
        }
        return $val;
    }
    add_filter( \'manage_users_custom_column\', \'new_modify_user_table_row\', 10, 3 );`

1 个回复
SO网友:Frank P. Walentynowicz

这个过程非常简单。将以下代码片段添加到当前(最好是子)主题functions.php.

Step 1 - 将新列添加到用户表列表:

function wpse_add_user_table_list_column($column) {
    $column[\'call_sign\'] = \'Call Sign\';
    return $column;
}
add_filter(\'manage_users_columns\', \'wpse_add_user_table_list_column\');
Step 2 - 使此新列可排序:

function wpse_user_table_list_sortable_columns($columns) {
    $columns[\'call_sign\'] = \'call_sign\';
    return $columns;
}
add_filter(\'manage_users_sortable_columns\', \'wpse_user_table_list_sortable_columns\');
Step 3 - 为此新列提供值:

function wpse_user_table_list_column_value($val, $column_name, $user_id) {
    if(\'call_sign\' === $column_name) {
        // code to set new value ( $new_value )
        return $new_value;
    }
    return $val;
}
add_filter(\'manage_users_custom_column\', \'wpse_user_table_list_column_value\', 10, 3);

结束

相关推荐

为什么wp_users表中的USER_PASS列是varchar(64)

在处理项目时,我发现“wp\\u users”表中的“user\\u pass”列是varchar(64)。WordPress总是将用户密码存储在md5中,md5是一个32字符的ASCII字符串。那么,为什么不将其存储在具有ascii排序规则的char(32)中呢。我这样问是因为我正在处理一个存储用户密码的表。使用varchar(64)还有其他好处吗。