我正在使用Register Plus Redux插件用自定义元数据字段扩充注册表。这些字段显示在每个用户记录详细信息页面的底部,可以使用get\\u the\\u author\\u meta检索这些字段。
此外,我能够在用户面板(列表视图)中创建列,并使这些列可排序。问题是,当我单击自定义列标题时,URL中的orderby=值似乎被忽略。换句话说,生成用户列表视图的查询似乎不包括自定义元数据(例如,如果元数据不在用户数据的通常位置,可能需要join语句?)。感觉好像我错过了一步。
以下是创建自定义列的代码:
//add columns to User panel list page
function add_user_columns( $defaults ) {
$defaults[\'company\'] = __(\'Company\', \'user-column\');
$defaults[\'title\'] = __(\'Title\', \'user-column\');
return $defaults;
}
function add_custom_user_columns($value, $column_name, $id) {
if( $column_name == \'company\' ) {
return get_the_author_meta( \'company_name\', $id );
}
if( $column_name == \'title\' ) {
return get_the_author_meta( \'titlefunction\', $id );
}
}
add_action(\'manage_users_custom_column\', \'add_custom_user_columns\', 15, 3);
add_filter(\'manage_users_columns\', \'add_user_columns\', 15, 1);`
下面是使这些列可排序的代码:
function user_sortable_columns( $columns ) {
$columns[\'company\'] = \'Company\';
return $columns;
}
add_filter( \'manage_users_sortable_columns\', \'user_sortable_columns\' );
function user_column_orderby( $vars ) {
if ( isset( $vars[\'orderby\'] ) && \'company\' == $vars[\'orderby\'] ) {
$vars = array_merge( $vars, array(
\'meta_key\' => \'company\',
\'orderby\' => \'meta_value\',
\'order\' => \'asc\'
) );
}
return $vars;
}
add_filter( \'request\', \'user_column_orderby\' );`
有什么想法可以更新生成用户列表的查询,使其包含按自定义字段排序的内容吗?或者,如果这不是问题所在,那么如何使自定义列标题在单击时对用户列表进行排序?
非常感谢。