PHPでの自動WordPress管理者ログイン

今日の投稿は、WordPressサイトにきちんとした小さな機能をインストールする方法を紹介する短い記事にすぎません。これを安全に使用すると、非常に便利です。これは、ユーザーがログインするための一般的なアカウントを提供するWordPressサイトで使用するように設計されています。たとえば、多くのバックエンドWordPressデモでは、作成者は見込み顧客がログインして自分の製品で遊ぶための「デモ」アカウントを作成します。多くの場合、作者は単に通知を表示するだけです。


ユーザー名: デモ
パスワード: デモ

これは少し歩行者です。確かに、デモをもう少し合理的でプロフェッショナルに見せることができますか?これらの資格情報を使用してWordPress管理者に自動的にログインするための簡単なスニペットを提供します。これは、テーマの関数ファイルにドロップするか、独自のプラグインファイルに入れてアクティブにすることができます。.

これは次の場合に役立ちます。

  • あなたのサイトには、匿名ユーザーがログインするための一般的なアカウントがあります.
  • 「ワンクリック」ログインリンクが必要.
  • デモへの迅速かつ効率的なパスを提供し、必要な手順を最小限に抑えて、製品のデモ変換を最大化したい.
  • 訪問者を直接関連する場所に誘導したい(例:設定ページ).

重要:これを使用して、実際の権限を持つアカウントにログインしないでください。例えば。管理者/編集者アカウントなど.
このスニペットは慎重に使用してください.

それでは、他のチュートリアルで行ったように、最初に注釈付きの完全なコードを提供します。これにより、読書のファンではない人でもすぐに実験を始めることができます。次のスニペットは、スタンドアロンプ​​ラグインの形式でスタイル設定されています(私の個人的な好み).

Github上のHarri Bell-Thomas

/ *
プラグイン名:自動ログイン
プラグインURI:http://hbt.io/
バージョン:1.0.0
著者:ハリベルトーマス
著者URI:http://hbt.io/
* /

function autologin(){
//チェックするパラメータ
if($ _GET ['autologin'] == 'demo'){

//ログインするアカウントのユーザー名
$ creds ['user_login'] = 'デモ';

//使用するアカウントパスワード
$ creds ['user_password'] = 'デモ';

$ creds ['remember'] = true;
$ autologin_user = wp_signon($ creds、false);

if(!is_wp_error($ autologin_user))
header( '場所:wp-admin'); //リダイレクト先の場所
}
}
//ヘッダーとクッキーが送信される直前にコードを追加します
add_action( 'after_setup_theme'、 'autologin');

使用法

使い方はとても簡単です。アカウントのユーザー名とパスワードはプラグインファイル(上記のコード)で指定されており、ログインするにはアクセスするだけです。 http://example.com/wp-login.php?autologin=demo

指定したアカウントにログインして、すぐにwp-adminにリダイレクトされます。資格情報が間違っている場合でも、通常どおりログインフォームが表示されます。.

カスタマイズ

このスニペットはカスタマイズが非常に簡単です。基本的に、編集する必要があるのは3つだけです。これらの変更はすべて、次のコードブロックで行います(完全なコードの11〜17行目)。

if($ _GET ['login'] == 'dummy_account'){

//ログインするアカウントのユーザー名
$ creds ['user_login'] = 'ダミー';

//使用するアカウントパスワード
$ creds ['user_password'] = 'pa55word';

1行目には、URLパラメータの条件チェックがあります。上記のコードブロックがチェックします。 wp-login.php?login = dummy_account

これらの値は何でもかまいませんが、「loggedout」、「action」、「redirect_to」などの元のWordPressパラメータを避けてください。 4行目は、ログインに使用するユーザー名を指定する場所です。カスタマイズされたコードスニペットは、「ダミー」アカウントへのログインを試みます。ご想像のとおり、7行目はパスワードを指定する場所です。上記のパスワードは「pa55word」です。これらの値を入力してください。これで問題ありません。!

拡張

現時点では、スニペットは1つのアカウントへの自動ログイン用にのみ設定されています。アカウントごとに異なるログインリンクが必要な場合はどうなりますか?これは非常にすばやく簡単に実行でき、スニペット全体を何度も繰り返す必要はありません。私の解決策を以下で見てください.

/ *
プラグイン名:自動ログイン
プラグインURI:http://hbt.io/
説明:便利な自​​動ログインリンクを作成して、一般的なアカウントにすばやくログインします。変更を加えるためにソースコードを構成する.
バージョン:1.0.0
著者:ハリベルトーマス
著者URI:http://hbt.io/
* /

//グローバル変数を宣言します
グローバル$ login_parameter、$ accounts;

//チェックするパラメータ
//例http://exmaple.com/wp-login.php?param_name=account
$ login_parameter = "autologin";

//アカウントコードブロック
$ accounts [] = array(
「ユーザー」=>「デモ」,
「合格」=>「デモ」,
"場所" => "wp-admin",
);
//アカウントコードブロックを終了

//必要な数のアカウントのコードブロックを編集して繰り返します

//別の反復の例
$ accounts [] = array(
"ユーザー" => "tcwp",
「合格」=>「デモ」,
"場所" => "wp-admin /?tcwp-sent-me",
);


//この機能の詳細については、前の例をご覧ください
function autologin(){
グローバル$ login_parameter、$ accounts;
foreach($ accounts as $ account){
if($ _GET [$ login_parameter] == $ account ['user']){
$ creds ['user_login'] = $ account ['user'];
$ creds ['user_password'] = $ account ['pass'];
$ creds ['remember'] = true;
$ autologin_user = wp_signon($ creds、false);
if(!is_wp_error($ autologin_user))
header( 'Location:'。$ account ['location']);
}
}
}
add_action( 'after_setup_theme'、 'autologin');

基本的にはこれは基本的に同じですが、生意気なforeachループに加えてアカウント配列もスローされます。 autologin()関数の構造は、コードが各アカウントに対して(foreachループを使用して)繰り返されることを除いて、同じです。これで、関連するすべての詳細がグローバル配列に格納されます。上記の例は2つのアカウント用に設定されていますが、スニペットは必要な数だけ対応できます。アカウントを追加するには、以下のコードブロックを必要なだけカスタマイズして追加します。.

//アカウントコードブロック
$ accounts [] = array(
「ユーザー」=>「別のアカウント」,
"pass" => "public_password",
"場所" => "http://YouCanPutURLsHereToo.com/",
);
//アカウントコードブロックを終了

また、パラメーター名をグローバル変数に移動したことにも気づくでしょう。これは必須ではありませんが、autologin()関数からすべてのハードコードされた値を削除するために行っただけです。.

結論

このスニペットは、製品のデモサイトなどの軽量な使用のために設計された単純な関数にすぎませんが、はるかに複雑なログインシナリオで使用される可能性があります。コードの残りの部分は一目瞭然のはずですが、私がやったこと、またはなぜ私がやったのかについて質問がある場合は、以下にコメントを残すか、ツイートしてください。フィードバック/提案/アイデアがある場合は、下のコメントセクションにコメントを残してください!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map