状況によっては、WordPressをフレームワークとして使用して、アプリの新規ユーザー用のアクティベーションシステムを構築しています。このコードのすべてが常駐している私たちの相互作用の大部分を駆り立てるプラグインがあります。
新規ユーザーがサインアップすると、電子メールを介してアクティブ化リンクが送信され、クリックするとアクティブ化ページに送信されます。詳細を保存したら、適切なメタデータを使用してユーザーを作成し、それらを個人用サブサイトに転送するカスタムルーティングテンプレートにリダイレクトします。
新しく作成したユーザーのユーザー名とパスワードを入手できるので、 wp_signon() を使用できます。他の場所でインスタンス化されたRegistration_Modelクラスがあります。サインインプロセスを開始するためのクラスメソッドは、add_actionを呼び出したい場所です。
public function sign_user_in() {
add_action( 'init', array( $this, 'auto_sign_in') );
}
サインインを処理するための私たちの方法は以下の通りですが、注意してください、私はアクションが文字列をエコーすることによってWordPressによってさえキューイングされているかどうかを確かめるために機能をテストしました。
public function auto_sign_in()
{
// if ( ! is_user_logged_in() ) {
//determine WordPress user account to impersonate
$creds = array();
$creds['user_login'] = $this->user->email;
$creds['user_password'] = $this->user->password->one;
$creds['remember'] = true;
$user = wp_signon( $creds, false );
if ( is_wp_error( $user ) ) {
echo $user->get_error_message();
} else {
wp_redirect('/_router/'); exit;
}
}
}
実行されていないアクション、または何かに固執しているようです。 add_actionはクラスコンストラクタ以外の場所から実行できますか?ありとあらゆる助言や援助は大歓迎です。
_編集_
Initにフックしてもまだ何も得られませんが、$this
の代わりに__CLASS__
を使用するように関数を調整しました。ちょうどテストとして、私は起動する絶対的な最後のフック、 'shutdown'を使いました、そしてそれを使ってブラウザにテスト文字列をエコーすることができます。それで、たくさんの操作がロードされていることを私は知っています、それで私はおそらくそれがより早く起動するようにどこかにadd_actionを移動する必要があります。
やってみました
add_action( 'init', array( $this, 'auto_sign_in') );
__CLASS__
は、クラスインスタンスではなくクラス名を返すので、静的関数に対してのみ機能します。
__CLASS__
は、$this
呼び出しでadd_action
にする必要があります。 __CLASS__
は関数がstatic
の場合にのみ使われると思います