web-dev-qa-db-ja.com

ダッシュボードのロール順ドロップダウン選択

私が取り組んでいるサイトには、メンバープラグインを介した非常に多数の固有のユーザーロールがあります。そのため、[新規ユーザーの追加]ページの[役割]ドロップダウンを選択して、作成順ではなくアルファベット順に役割を表示したいと思います。

これを行う方法はありますか?

7
Chirico

ほぼ同じアプローチ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'] )
    );
}

GitHubのプラグインとして

7
fuxia

どうやらあなたが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;
});
3
onetrickpony