管理用户中的可排序列(按编号)

时间:2021-07-26 作者:robert0

因此,我的函数PHP中有以下代码:

添加列

    /*
     * Add column to admin > users
     */

function yoursite_manage_users_columns( $columns ) {

    // $columns is a key/value array of column slugs and names
    $columns[ \'custom_field\' ] = \'Coins\';

    return $columns;
}
检索数据

    /*
     * Retrieving data to created column
     */

add_filter( \'manage_users_columns\', \'yoursite_manage_users_columns\', 10, 1 );

function yoursite_manage_users_custom_column( $output, $column_key, $user_id ) {

    switch ( $column_key ) {
        case \'custom_field\':
            $value = get_user_meta( $user_id, \'usercoins\', true );

            return $value;
            break;
        default: break;
    }

    // if no column slug found, return default output value
    return $output;
}

add_filter( \'manage_users_custom_column\', \'yoursite_manage_users_custom_column\', 10, 3 );
使可排序

/*
 * Make our "Coins" column sortable
 */
add_filter( \'manage_users_sortable_columns\', \'yoursite_manage_users_custom_column_sortable\' );
 
function yoursite_manage_users_custom_column_sortable( $columns ) {
    return wp_parse_args( array( \'custom_field\' => \'usercoins\' ), $columns );
}
上述代码返回数据(0到1000..)

除了排序,一切都正常。

出于某种原因,它按用户名排序。

所以,如果我单击排序,它将按用户名字母表升序排序。如果我再次单击,它将按用户名字母降序排列。

我需要按数字计数排序。

有什么我遗漏的吗。

急需帮助。

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

有什么我遗漏的吗

是的,您需要实际添加一个函数,该函数将根据您的usercoins "E;“排序依据”;值(您在yoursite_manage_users_custom_column_sortable() 函数)。

所以你可以挂接你的函数users_list_table_query_args, 然后更改参数,以便按照usercoins meta值(这是一个数字,因此我使用\'type\' => \'NUMERIC\'), 像这样:

add_filter( \'users_list_table_query_args\', \'yoursite_users_list_table_query_args\' );
function yoursite_users_list_table_query_args( $args ) {
    if ( is_admin() && \'usercoins\' === $args[\'orderby\'] ) {
        /* These also work, but to include users who do NOT have the usercoins meta,
         * you should instead use the meta_query arg below:
        $args[\'meta_key\'] = \'usercoins\';
        $args[\'orderby\']  = \'meta_value_num\';
         */

        $meta_query   = isset( $args[\'meta_query\'] ) ? (array) $args[\'meta_query\'] : [];
        $meta_query[] = array(
            \'relation\'      => \'OR\',
            \'has_usercoins\' => array(
                \'key\'  => \'usercoins\',
                \'type\' => \'NUMERIC\',
            ),
            \'no_usercoins\'  => array(
                \'key\'     => \'usercoins\',
                \'compare\' => \'NOT EXISTS\',
            ),
        );

        $args[\'meta_query\'] = $meta_query;
        $args[\'orderby\']    = \'has_usercoins\';
    }

    return $args;
}
看见https://developer.wordpress.org/reference/classes/wp_user_query/prepare_query/ 有关参数的完整列表,您可以在$args 上面的数组。

相关推荐

404在wp-admin上找不到nginx

我有自己的域名,我在InfinityFree上托管这个网站。所以在打字时http:// mysite.com/wp-admin 它给了我404找不到的nginx页面。我已成功安装WordPress,并添加了名称服务器。我什么都没有改变,只是安装了新的,并以这个结束。我不知道怎么了?我正在为自己创建网站,并且还在学习。我读了几篇文章,但没有找到确切的答案。非常感谢。