回答:
globalを使用$pagenowします。これは、実行時にWordPressによって設定される一般的なグローバルです。
if ( $GLOBALS['pagenow'] === 'wp-login.php' ) {
    // We're on the login page!
}
また、登録などのログインページのタイプを確認することもできます。
if ( $GLOBALS['pagenow'] === 'wp-login.php' && ! empty( $_REQUEST['action'] ) && $_REQUEST['action'] === 'register' ) {
    // We're registering
}
次のコードはレガシーと見なされており、使用すべきではありません(wp-register.php廃止され、その後かなり前に削除されました)。
if ( in_array( $GLOBALS['pagenow'], array( 'wp-login.php', 'wp-register.php' ) ) )
    run_my_funky_plugin();
if( is_wplogin() ){
   ...
}
コード:
function is_wplogin(){
    $ABSPATH_MY = str_replace(array('\\','/'), DIRECTORY_SEPARATOR, ABSPATH);
    return ((in_array($ABSPATH_MY.'wp-login.php', get_included_files()) || in_array($ABSPATH_MY.'wp-register.php', get_included_files()) ) || (isset($_GLOBALS['pagenow']) && $GLOBALS['pagenow'] === 'wp-login.php') || $_SERVER['PHP_SELF']== '/wp-login.php');
}
1)REQUEST_URI(またはSCRIPT_PATH)を使用してログインページをチェックしようとすると、多くのプラグインがLOGINおよびADMIN URLを変更するため、誤った値を取得することがあります。
2)$pagenowその場合も間違った値を与えます!
get_included_files()(私にとっては)最も正確な解決策と思われるまれな機会です。
                    それを行うより現代的な方法は、プラグインによってwp-login URLが変更され、WPがサブフォルダーなどにある場合でも動作するはずです。
if(stripos($_SERVER["SCRIPT_NAME"], strrchr(wp_login_url(), '/')) !== false){
    /* ... */
}
              return false !== stripos( wp_login_url(), $_SERVER['SCRIPT_NAME'] );。それは私にとって少しきれいに感じます。
                    WordPress独自のwp_login_url()メソッドを使用して、次のように実装しました。
public static function is_wp_login() {
  $login_path = rtrim( strtolower( parse_url( wp_login_url( '', true ), PHP_URL_PATH ) ), '/' );
  return ( rtrim( strtolower( $_SERVER[ 'REQUEST_URI' ] ), '/' ) == $login_path );
}
両方のパスを比較するだけで(終了する可能性があるため、SSLの使用について完全に確認するのは難しいため)十分なはずです...ただし、デフォルトのログインフォームを変更するプラグインまたはテーマの開発者は、だから適切な方法...
ログインページではなく、登録ページにのみ興味があります。したがって、これは誰もが望んでいるわけではありません。
$ GLOBALS ['pagenow']は、index.phpを返します。たぶんバディプレスや私のテーマが原因です。
だから私は使用しました
is_page('register')
登録ページの本文を検査する場合、そのページにもIDもあるため、page-id-4906と表示されている場合は、より適切に機能する場合はこのように使用できます。
is_page('4906')
              現在の答えはどれも役に立たなかった。
私がやったことは、$_GET配列に「ページ」キーがあり、その値が「サインイン」であるかどうかをチェックすることでした。
if (isset($_GET['page']) && $_GET['page'] == 'sign-in'){
   // you're on login page
}
              ここで提案されたいくつかのソリューションが機能したので、通常のWordPressサイトで動作する(Multisiteでテストされていない)本当にシンプルなものを見つけました。
単純な:
    if( !isset($_GET['action']) ){
        echo 'This is the Login Page.';
    } else { 
        echo 'This is the Register Page.';
    }
?action=register登録ページにいる場合にのみ存在するurlパラメーターを考慮します。
これは@ T.Toduaの回答のPSR-2バージョンです。うまくフォーマットしました。これは、テストなどの目的でフィルターを追加するなど、関数を操作することをお勧めします。
function isLoginPage()
{
    $is_login_page = false;
    $ABSPATH_MY = str_replace(array('\\', '/'), DIRECTORY_SEPARATOR, ABSPATH);
    // Was wp-login.php or wp-register.php included during this execution?
    if (
        in_array($ABSPATH_MY . 'wp-login.php', get_included_files()) ||
        in_array($ABSPATH_MY . 'wp-register.php', get_included_files())
    ) {
        $is_login_page = true;
    }
    // $GLOBALS['pagenow'] is equal to "wp-login.php"?
    if (isset($GLOBALS['pagenow']) && $GLOBALS['pagenow'] === 'wp-login.php') {
        $is_login_page = true;
    }
    // $_SERVER['PHP_SELF'] is equal to "/wp-login.php"?
    if ($_SERVER['PHP_SELF'] == '/wp-login.php') {
        $is_login_page = true;
    }
    return $is_login_page;
}