因此,我的函数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..)
除了排序,一切都正常。
出于某种原因,它按用户名排序。
所以,如果我单击排序,它将按用户名字母表升序排序。如果我再次单击,它将按用户名字母降序排列。
我需要按数字计数排序。
有什么我遗漏的吗。
急需帮助。
最合适的回答,由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
上面的数组。