私が取り組んでいるサイトには、メンバープラグインを介した非常に多数の固有のユーザーロールがあります。そのため、[新規ユーザーの追加]ページの[役割]ドロップダウンを選択して、作成順ではなくアルファベット順に役割を表示したいと思います。
これを行う方法はありますか?
ほぼ同じアプローチOne Trick Ponyが選択されていますが、私は翻訳された名前とuasort()
(キーを保存するため)を使用しています。
add_filter( 'editable_roles', 't5_sort_editable_roles' );
/**
* Array of roles.
*
* @wp-hook editable_roles
* @param array $roles
* @return array
*/
function t5_sort_editable_roles( $roles )
{
uasort( $roles, 't5_uasort_editable_roles' );
return $roles;
}
/**
* Compare translated role names.
*
* @param array $a First role
* @param array $b Second role
* @return number
*/
function t5_uasort_editable_roles( $a, $b )
{
return strcasecmp(
translate_user_role( $a['name'] ),
translate_user_role( $b['name'] )
);
}
どうやらあなたがget_editable_roles
関数(それはそのページで呼ばれる)で使うことができるフィルタがある:
add_filter('editable_roles', function($roles){
// sort alphabetically (ignores case)
usort($roles, function($a, $b){
return strcasecmp($a["name"], $b["name"]);
});
return $roles;
});