ウィジェットにログイン・ログアウトする機能があれば便利だと思って作成してみました。
実装
ここにあるコードをお使いのテーマの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]
と入れるだけです!
- 先ほど貼り付けた
add_shortcode('register', 'register');
add_shortcode('login', 'login');
を
add_shortcode('registers', 'register');
add_shortcode('logins', 'login');
と一度変える。
二つあるうちの前を変えてください。変えれば文字は何でもいいです。 - ショートコードで[]の中でlogin, registerをはる。記事、固定ページ保存。
- add_shortcode('register', 'register');
add_shortcode('login', 'login');
に戻す
とりあえず先にショートコードの文字列を決定して、そのあとにコードの文字を変えればいいみたいです。
関係する記事
securimageをカスタマイズしたい
カスタマイズできるところをのせました。
以上です。ご覧いただきありがとうございました。