お問い合わせ

    氏名

    メールアドレス

    件名

    メッセージ本文



    763万 キーワード

    2021年 検索パフォーマンス

    57.8万 人が訪問

    2021年 訪問ユーザー数

    WordPressのスキルアップはこちら!▶[click]
    いま、どうしてる? 誰でも検索できます

    【WordPress】ワードプレスの会員ログイン画面をプラグインを使わず自力で作成してみる〜functions.php編〜

    WordPress(ワードプレス)
    この記事は約5分で読めます。
    「ワードプレスで未来を変える!」
    誰でも挑戦できます!!
    【未経験挑戦可!】スキルアップしたい!WordPressに挑戦したい!何かに挑戦して未来を変えたい!という方をお待ちしています↓↓

    ワードプレスに「会員登録機能を付けたい・・・!」と思ったときには、プラグインを使う方法が思いつくかと思いますが、そもそもどうやって作るのか…?と思ったので、実際に試してみることにしました。

    ■ご参考にさせていただきました。ありがとうございます。
    WordPressで会員登録フォームとログインフォームを自作してみる【プラグインなし】
    WordPressにログインフォームを独自に実装する

    新規会員登録フォーム作成

    このあたりは、過去にも同じような内容を書いたので省略しますが、「パスワードを忘れた方は」を作りたい場合に、下記のような1行を追加してみます。

    パスワードを忘れた方は<a href="/wp-login.php?action=lostpassword">こちら</a>

    ただこのままだとワードプレスの「ユーザー名、またはメールアドレスを入力してください。パスワードのリセット手順が記されたメールが送信されます。」のページに移動するので、このあたりの処理も、おいおい追加してみたいと思います。

    functions.php ログイン

    /*** ログインに関する処理を実行する ***/
    //アクションフックを追加
    add_action( 'template_redirect', 'login_init' );
    
    //関数を実行
    function login_init() {
    //ログインページでなければ実行しない
    if ( ! is_page( 'login' ) ) {
    return;
    }
    
    //変数を準備
    global $email, $error;
    $email = "";
    $error = "";
    
    //HTML入力フォームの値を受信
    if ( isset( $_POST['login_nonce'] ) ) {
    //nonce用ハッシュ値を検証します
    if ( ! wp_verify_nonce( $_POST['login_nonce'], 'login') ) {
    $error .= '不正な遷移です';
    } else {
    if ( ! empty( $_POST['user_email'] ) ) {
    $email = $_POST['user_email'];
    } else {
    $error .= "メールアドレスを入力してください";
    }
    if ( ! empty( $_POST['user_pass'] ) ) {
    $password = $_POST['user_pass'];
    } else {
    //パスワードが空白であれば
    $error .= "パスワードを入力してください";
    }
    }
     
    if ( ! $error ) {
    //ユーザー取得
    $user = get_user_by( 'email', $email );
    if ( false === $user ) {
    $error .= "メールアドレスが間違っています。";
    } else {
    //ログイン実行
    $creds = array();
    $creds['user_login'] = $user->data->user_login;
    $creds['user_password'] = $password;
    $creds['remember'] = true;
    $user = wp_signon( $creds, false );
    if ( is_wp_error( $user ) ) {
    if ( array_key_exists( 'incorrect_password', $user->errors ) ) {
    $error .= "パスワードが間違っています。";
    } else {
    $error .= "ログインに失敗しました。";
    }
    } else {
     //ログイン成功→リダイレクト
    wp_safe_redirect( '/login-success/');
    }
    }
    }
    }
    }

    前は、ログイン成功したタイミングでthe_parmalink()としていましたが、別のページに遷移した方が良さそうでしたので、少し修正をしてみます。

    wp_safe_redirect( the_parmalink() );

    テンプレートタグ/the permalink

    「ログイン成功ページ」に移動するように変更。

    //ログイン成功→リダイレクト
    wp_safe_redirect( '/login-success/');

    動きました!!

    気になった点・メモ

    ログインを押したあと、30秒ほど?is_user_logged_in()に入らない・・・?時間があるような感じがします。・・・なぜか。

    ログインはできているような感じなのですが、どこかがおかしい・・・

    間になにかの処理が必要なのでしょうか…?

    んー…。(^_^;) また何か分かったら、追記したいと思います。

    メンター
    メンター

    ちょっとまだ分からない点が多いです・・・!すみません!

    メンティー
    メンティー

    大丈夫です!私も覚えます!!

    まとめ

    ワードプレスは覚えれば覚えるほど楽しくなりますので、ぜひ挑戦してみることがオススメです!

    「あなたのスキルアップを、形に。」

    ▶参考

    Loading
    タイトルとURLをコピーしました