如何解决在wp-admin所有用户页面上显示可排序的公司列
我需要在wp-admin的“所有用户”页面上显示可排序的“公司”列。我正在使用WooCommerce。我修改了下面的代码,并能够添加“公司”列并使之可排序。我可以使用以下数据填充列:
get_the_author_meta( 'user_firstname',$user ); // https://developer.wordpress.org/reference/functions/get_the_author_meta/
// I tried using company and user_company but they didn't work
get_the_author_meta具有许多不同的值,但我认为它不能拉公司,因为公司是WooCommerce添加的默认字段。我的完整代码如下。我如何向公司展示?另外,如何更改这些列的顺序?我想按此顺序显示用户名,名称,公司和电子邮件。
/*
* Create a column & remove some of the default ones
* @param array $columns Array of all user table columns {column ID} => {column Name}
*/
add_filter( 'manage_users_columns','rudr_modify_user_table' );
function rudr_modify_user_table( $columns ) {
unset( $columns['role'] ); // Remove role column
unset( $columns['posts'] ); // Remove posts column
$columns['company'] = 'Company'; // Add new company column
return $columns;
}
/*
* Fill our new column with the company name of the users (if they have a company name in their profile)
* @param string $row_output text/HTML output of a table cell
* @param string $column_id_attr column ID
* @param int $user user ID (in fact - table row ID)
*/
add_filter( 'manage_users_custom_column','rudr_modify_user_table_row',10,3 );
function rudr_modify_user_table_row( $row_output,$column_id_attr,$user ) {
switch ( $column_id_attr ) {
case 'company' :
// return get_the_author_meta( 'company',$user );
// company is not included here: https://developer.wordpress.org/reference/functions/get_the_author_meta/
// Need to use WooCommerce to find it but below is not working:
return get_user_meta( get_current_user_id(),'company',true );
break;
default:
}
return $row_output;
}
/*
* Make our "Company" column sortable
* @param array $columns Array of all user sortable columns {column ID} => {orderby GET-param}
*/
add_filter( 'manage_users_sortable_columns','rudr_make_company_column_sortable' );
function rudr_make_company_column_sortable( $columns ) {
return wp_parse_args( array( 'company' => 'registered' ),$columns ); // This has an issue
}
解决方法
-
request:您可能需要将此过滤器与
manage_users_sortable_columns
结合使用。add_filter( 'request','company_column_orderby' ); //Add filter to the request to make the hits sorting process numeric,not string function company_column_orderby( $vars ) { if ( isset( $vars['orderby'] ) && 'company' == $vars['orderby'] ) { $vars = array_merge( $vars,array( 'meta_key' => 'company','orderby' => 'meta_value_num' ) ); } return $vars; } add_filter( 'manage_users_sortable_columns','user_sortable_columns' ); function user_sortable_columns( $columns ) { $columns['company'] = 'Company'; return $columns; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。