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

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

実装

ここにあるコードをお使いのテーマのfunctions.phpに追記してください。
(/wp-content/themes/<使っているテーマ>/functions.php)

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

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

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

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

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

functions.php
//login form in widget
function login_widget() {

	$body = <<

register / 登録
HTML; $logout_form = << 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の使い方・カスタマイズ方法

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