これを行うための一見自然な場所は、OutputPage :: showPermissionsErrorPage()になります。具体的には、実際のエラーメッセージは次の2行に表示されます。
$this->prepareErrorPage( $this->msg( 'loginreqtitle' ) );
$this->addHTML( $this->msg( $msg )->rawParams( $loginLink )->parse() );
Special:UserLoginに直接リダイレクトするには、次のような(テストされていない!)コードに置き換えることができます。
$this->redirect( SpecialPage::getTitleFor( 'Userlogin' )->getFullURL( $query ) );
残念ながら、拡張機能からこれを実行できる便利なフックはないようです。そのため、コードにパッチを適用する必要があるようです。これはフックの自然な場所のように見えるので、そのようなフックを追加するように要求する機能要求を提出することは悪い考えではないかもしれません。
(または、ログインフォームを所定の場所に出力することもできますが、Special:UserLoginにリダイレクトするよりも、実装が少し難しい場合があります。一見すると、呼び出すのに便利な「outputLoginForm()」メソッドが見つかりませんでした。Special:UserLoginコードであり、一致するログインフォームを自分で生成することは実際には難しくありませんが、それ以降にフォームを変更すると互換性が失われる可能性があります。)