プラグインElementorのelementor/maintenance_mode/is_login_pageフィルタの使用方法・解説

概要

elementor/maintenance_mode/is_login_page フィルタは、Elementor プラグイン内でユーザーがログインページにいるかどうかを判断する際に利用されるフックです。このフィルタを使用することで、特定の条件下でログインページであるとクリアに判別したり、他の処理を適用することができます。主に、メンテナンスモードやカスタムログインページの実装時に便利です。

このフィルタは以下のような機能を実装する際によく使われます:

  1. カスタムログインページにメンテナンスモードを適用する。
  2. ログインページへのリダイレクト処理を追加する。
  3. 特定のユーザー権限を持つユーザーをメンテナンスモードから除外する。
  4. ログインフォーム周辺にカスタムメッセージやデザインを追加する。
  5. 不正アクセスの試行を制限する。
  6. ログイン時のカスタムリダイレクトを実装する。

構文

add_filter('elementor/maintenance_mode/is_login_page', 'custom_is_login_page', 10, 2);

パラメータ

  • $is_login_page (bool) – 現在のページがログインページであるかどうかを示すブール値。
  • $request (WP_Request) – 現在のリクエストオブジェクト。

戻り値

  • ログインページである場合は true、それ以外は false。

使用可能なバージョン

  • Elementor バージョン: 3.0.0 以上
  • WordPress バージョン: 5.0 以上

この関数のアクションでの使用可能性

アクション 使用例
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

サンプルコード

サンプル1

add_filter('elementor/maintenance_mode/is_login_page', function($is_login, $request) {
    // 特定のカスタムURLがログインページの場合をカスタマイズ
    if ($request->get_path() === '/custom-login') {
        return true;
    }
    return $is_login;
});

このコードは、カスタムログインページ(/custom-login)をログインページとして認識させるものです。

サンプル2

add_filter('elementor/maintenance_mode/is_login_page', function($is_login, $request) {
    // ユーザーが特定のトークンを持っているとき、ログインページとみなす
    if ($request->get('token') === 'special_token') {
        return true;
    }
    return $is_login;
});

このコードは、特定のトークンがURLに含まれる場合、ログインページと認識します。

サンプル3

add_filter('elementor/maintenance_mode/is_login_page', function($is_login, $request) {
    // 管理者がログインページにアクセスしている場合はtrue
    if (current_user_can('administrator')) {
        return true;
    }
    return $is_login;
});

管理者ユーザーがログインページにアクセスした場合、常にログインページとして認識させるコードです。

サンプル4

add_filter('elementor/maintenance_mode/is_login_page', function($is_login, $request) {
    // もしリクエストがAJAXの場合、ログインページと認識しない
    if ($request->is_ajax()) {
        return false;
    }
    return $is_login;
});

AJAXリクエストに対しては、ログインページとして認識させないコードです。

サンプル5

add_filter('elementor/maintenance_mode/is_login_page', function($is_login, $request) {
    // もしリクエストのリファラーが特定のドメインからであれば、ログインページとみなす
    if ($request->get_header('referer') == 'https://example.com/') {
        return true;
    }
    return $is_login;
});

特定のリファラーからのリクエストに対して、ログインページとして扱うコードです。

この関数について質問する


上の計算式の答えを入力してください