私の会社のサイトとドキュメントを索引付けするのにswish-eを使っている。問題は、get変数を介してwordpressにログインする必要があることです。 Wordpressのログインではpost変数を使用していますが、GET変数でログインする必要があります
簡単な方法はありますか?コアファイルを変更しても構いません。他に選択肢はありません。
私はwp-login.phpを見ましたが、私はこれを行う方法についての手がかりを持っていません。
よろしく
ユーザー名とパスワードにGET変数を使用することはお勧めできません。しかしとにかく、次のようなものでうまくいくはずです。
if(isset($_GET['log']) && isset($_GET['pwd'])){
$creds = array();
$creds['user_login'] = $_GET['log'];
$creds['user_login'] = $_GET['pwd'];
$creds['remember'] = true; //Do you want the log-in details to be remembered?
$user = wp_signon( $creds, false );
if ( is_wp_error($user) )
echo $user->get_error_message(); //Display error message if log-in fails
}
これをテンプレートに入れてから、そのテンプレートを使用して別のログインページを作成するためのページを作成できます。その場合は、http:// [ページのURL]?log = username&pwd = passwordにアクセスしてください。
http://mysite.com/wp-login.php?log=username&pwd=password を取得するには、上記のコードをwp-login.phpコアファイル。コードを修正するのではなく(次回WordPressを更新したときに上書きされます)、フックを使用することをお勧めします。同様に、(これをあなたのfunctions.php
またはプラグインに入れてください):
add_action('init', 'GET_login');
function GET_login() {
//Check that we are on the log-in page
if(in_array($GLOBALS['pagenow'], array('wp-login.php'))):
//Check that log and pwd are set
if(isset($_GET['log']) && isset($_GET['pwd'])):
$creds = array();
$creds['user_login'] = $_GET['log'];
$creds['user_password'] = $_GET['pwd'];
$creds['remember'] = true; //Do you want the log-in details to be remembered?
//Where do we go after log-in?
$redirect_to = admin_url('profile.php');
//Try logging in
$user = wp_signon( $creds, false );
if ( is_wp_error($user) ){
//Log-in failed
}else{
//Logged in, now redirect
$redirect_to = admin_url('profile.php');
wp_safe_redirect($redirect_to);
exit();
}
endif;
endif;
//If we are not on the log-in page or credentials are not set, carry on as normal
}
説明:この関数はinit
フックを使用して実行されます。まず./wp-login.php
ページにいることを確認し、次にlog
とpwd
変数が設定されていることを確認します。そうでない場合は、通常どおり続行します。もしそうなら、wp_signon
を使ってログインを試みます。成功すれば(あなたが好きなところならどこにでも)リダイレクトされます。失敗した場合は何かを行います(表示エラー、多分?)。
それが役立つことを願っています