【wordpress】ウィジェットにログインフォームをプラグインなしキャプチャありで設置する

【wordpress】ウィジェットにログインフォームをプラグインなしキャプチャありで設置する

ウィジェットにログイン・ログアウトする機能があれば便利だと思って作成してみました。

実装

ここにあるコードをお使いのテーマのfunctions.phpに追記してください。

ウィジェットでショートコードを使えるようにする

このコードを加えることで、普通はできないショートコードでウィジェットが使えるようになります。

functions.php
//do shortcode in widget
add_filter('widget_text', 'do_shortcode' );

ウィジェットに表示するもの

ログインしていないときはログインフォームが、ログインしているときは名前とログアウトボタンが出現します。お好みで調節してください。

functions.php
//login form in widget
function login_widget() {
    $body = << user name password capcha <img id="captcha_widget" src="/securimage/securimage_show.php" alt="CAPTCHA Image"> Different Image register / 登録 login
    HTML;
    $logout_form = << logout
    HTML;
    $user = wp_get_current_user();
    $id = get_current_user_id();
    if(is_user_logged_in()){
        echo "Hi, $user->display_name";
        echo $logout_form;
    } else {
        echo $body;
    }
}
add_shortcode('login_widget', 'login_widget');

ログアウト機能を搭載

このコードを加えることで、ログアウトurlを見せることなくログアウトできます。

functions.php
//logont
add_action('after_setup_theme', function() {
    if ( isset( $_POST['my_logout'] ) && $_POST['my_logout'] === 'logout') {
        // ログインフォームからの送信があれば
        my_logout();
    }
});
//logout function
function my_logout() {
    wp_logout();
    exit;
    return;
}

「securimage」をダウンロード

キャプチャには「securimage」を使用します。

ここからダウンロードできます。

人によってやり方は違うかもしれませんが、ダウンロードしたら、wp-adminやwp-content, wp-imcludeがある階層に「securimage」の名前で保存してください。
私はパソコンにzipで保存して、Cyberduckを使ってFTPS経由で保存しました。
もちろん階層、名前は自由ですが、自分が載せたコードでは/securimageでアクセスするようにしています。
なのでそこを変えれば任意の階層、名前でも動きます。

仕上げ

全てできましたか?

あとはwidgetのカスタムHTMLにショートコードで[login_widget]と入れるだけです!

  1. 先ほど貼り付けた
    add_shortcode('register', 'register');
    add_shortcode('login', 'login');

    add_shortcode('registers', 'register');
    add_shortcode('logins', 'login');
    と一度変える。
    二つあるうちの前を変えてください。変えれば文字は何でもいいです。
  2. ショートコードで[]の中でlogin, registerをはる。記事、固定ページ保存。
  3. add_shortcode('register', 'register');
    add_shortcode('login', 'login');
    に戻す

とりあえず先にショートコードの文字列を決定して、そのあとにコードの文字を変えればいいみたいです。

関係する記事

securimageをカスタマイズしたい

カスタマイズできるところをのせました。

securimageの使い方・カスタマイズ方法
securimageの使い方・カスタマイズ方法

以上です。ご覧いただきありがとうございました。

関連記事

【wordpress】登録・ログインフォームをプラグインなし・キャプチャありで実装する

【wordpress】登録・ログインフォームをプラグインなし・キャプチャありで実装する

【泣けるほど簡単】投稿内に自分しか見えないメモをプラグインなしで実装する方法

【泣けるほど簡単】投稿内に自分しか見えないメモをプラグインなしで実装する方法

【wordpress】プラブインなしで管理バーを権限別に表示・非表示にする

【wordpress】プラブインなしで管理バーを権限別に表示・非表示にする

Javascript/Typescript(+react等)開発環境を簡単に構築するスクリプト作った

Javascript/Typescript(+react等)開発環境を簡単に構築するスクリプト作った

【wordpress】ユーザーのダッシュボードアクセスを制限するプラグイン【Remove Dashboard Access】

【wordpress】ユーザーのダッシュボードアクセスを制限するプラグイン【Remove Dashboard Access】

【wordpress】ログイン・非ログイン時で表示する内容を変える方法

【wordpress】ログイン・非ログイン時で表示する内容を変える方法

【失敗談アリ】テックアカデミーのAIコースを徹底レビューする

【失敗談アリ】テックアカデミーのAIコースを徹底レビューする