Register Plus Reduxプラグインを使用して、カスタムメタデータフィールドで登録フォームを拡張しています。これらのフィールドは、各ユーザーレコードの詳細ページの下部に表示され、get_the_author_metaで取得できます。
さらに、[ユーザー]パネル(リストビュー)で列を作成し、これらの列を並べ替えることができます。問題は、カスタム列見出しをクリックすると、URLのorderby =値が無視されているように見えることです。言い換えると、ユーザーのリストビューを生成するクエリにカスタムメタデータが含まれていないようです(たとえば、メタデータがユーザーデータの通常の場所にない場合は、結合ステートメントが必要ですか?)。一歩逃したような気がします。
カスタム列を作成するためのコードは次のとおりです。
//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' );`
ユーザーのリストを生成するクエリを更新して、カスタムフィールドによる並べ替えが含まれるようにする方法はありますか?または、それが問題ではない場合、カスタム列見出しがクリックされたときにユーザーのリストを並べ替える方法を教えてください。
ありがとうございました。