/ / wordpress admin-ajax buddypress認証 - php、wordpress、buddypress

wordpress admin-ajax buddypress認証 - php、wordpress、buddypress

要件:Wordpress / Buddypressプログラムによる認証

外部APIを介してWordpressユーザー登録プロセスを作成しました。これは、Eメールが登録されているかどうかを確認し、登録されていない場合はを使用して新しいWPユーザーを作成します。

$random_password = wp_generate_password( $length,$include_standard_special_chars);
$user_id = wp_create_user( $user_name, $random_password, $user_email );

また、

$meta_key = "authorities";
$meta_value = $authorites;
add_user_meta( $user_id, $meta_key, $meta_value, true );

役割のために。 での登録プロセス add_action("init", MyAuthFunction); 有効なユーザーが見つからない場合のみ

問題は、Buddypressのハートビートadmin-ajax.phpプロセスが返すことです。

{"wp-auth-check":false、 "server_time":1521498709}

新しい活動のコメントやフォーラムの投稿が試みられたときはいつでも。 この順番に生成されます(「投稿」をクリックすると)

本当によろしいですか?</p> <p> <a> href = "WP_DOMAIN / activity /">もう一度やり直してください。</a>

admin-ajax.phpへの返信として

この結果として、活動やフォーラムに新しい項目を投稿することはできません。 奇妙なことは、フォーラムとアクティビティのセクションがどのユーザーがログインしているかを知っているということです(つまり、ログイン名を表示する)。

私はこれがbuddypress内でのある種の二次的なユーザー登録であると思いますが、それを見つけることができないようです。これまでのところ、私はフックへのコメントを見ました:

  • bp_core_signup_user()
  • bp_signup_validate()

したがって、質問:新規WPユーザーが登録フォームではなくコードで作成された場合、Buddypressは2次認証形式またはフラグを必要としますか。

これまでのところ、調査中です。 (上記の機能に見られるように)Buddypress追加のユーザー要件データ 問題を再現するために、管理者による新しいユーザーのサインアップを再テストしてください。 (これまでのところ、Buddypressプラグイン(または管理者)の前に追加されたオリジナルのユーザーはこの問題を経験しません)

UPDATE: "r-a-y"レスポンスからこれを使用しようとしている(ページの途中まで) https://buddypress.org/support/topic/how-to-hook-into-add-new-member-in-buddypress-unresolved/

'last_activity'ユーザを追加することでプログラム的にこれを回避することができます メタエントリ

残念ながらこれは正しくありません。問題のユーザーはlast_activityのレコードをユーザーmetaに持っているからです。

アップデート2: 認証プラグインを無効にし、adminとしてログインし、ユーザーパスワードを変更し、adminとしてログアウトし、コードで作成されたユーザーとして/ admin /(wp-admin)を介してログインし、/ activity /にコメントを投稿します。 このシーケンスによって、アクティビティセクションにコメントを投稿できます。 したがって、プログラムによって作成されたユーザーは問題ありません。問題は、ユーザーに満足するようにバディプレスをトリガーする「ログイン」プロセスのどこかにあるようです...

プラグイン対admin-ajax is_user_logged_in()結果

更新3: 問題の切り分けは邪魔にならないようですそのadmin-ajax.phpは$ current_user(Wp_User)値を取得します。 メンバーが/ admin / loginフォームを介してログインすると、admin-ajax.phpが現在のユーザーを抽出することを可能にする魔法の値が設定されます。 ユーザー認証Cookieが次のように設定されている場合

wp_clear_auth_cookie();
wp_set_current_user ( $user_id );
wp_set_auth_cookie  ( $user_id );

その場合、管理者Ajaxは$ current_userを取得できないように見えるので、is_user_logged_in()が失敗します。

そのため、admin-ajax.phpの分離と現在のユーザーの抽出(ページロードではログインしているがadmin-ajax.php経由ではログインしていない)の再定義された問題

回答:

回答№1は0

最後の問題は、wp_logout()が特定のケースで呼び出されていたため、

  • wordpress_logged_in_xxxxx
  • wordpress_sec_xxxxx

これがis_logged_in_user()が空のインスタンスを返す原因となったクッキーです。

すべての人への注意:外部API経由でWordpressにサインイン/サインインするときは、あなたのクッキーが正しく設定されていることを確認してください(httpとhttpsそしてドメイン)。

注:これはまったくバディプレスの問題ではありません