۸ محمد
ورود خودکار
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۱۹ اردیبهشت ۱۴۰۱

سلام

برای ورود خودکار تابع

add_action( 'user_register','function_name');

رو معرفی کردید

این هوک رو باید در فایل ajax.php استفاده کنیم؟بعد از کد wp_send_json

       ],500);
   }
   wp_send_json(
      [
         'success' => true,
         'message' => 'ثبت نام شما با موفقیت انجام شد'
      ],200);
}

کجا باید بیاریم؟؟؟یا در فایل auth.js ؟؟

من متوجه این نشدم

سورس کدها

سلام خدمت شما

این اکشن وقتی این تابع wp_insert_user اجرا می‌شه فراخوانی میشود مراحل زیر را انجام دهید :

1-در هر فایلی (مثال functions.php) خواستید

add_action( 'user_register', 'function_name'  );
  function function_name( $user_id, $userdata ){}
2-

2-درون این تابع هر عملیاتی که خواستید انجام دهید مثال ارسال sms برای کاربری که عملیات ثبت نام را انجام می‌دهد وقتی ثبت نام با موفقیت انجام بشه این اکشن فراخوانی می‌شه وبرای این کاربر sms ارسال خواهد شد

3-برای درک بهتر تابع function_name کد زیر را درونش قرار دهید:

$result = get_option('user_register',[]);
$result[$user_id] = $userdata['user_login'];
update_option('user_register',$result,);

4-سپس در هر جای خواستید کد زیر را فراخوانی کنید :

var_dump(get_option('user_register',[]));
رضا محب ۲۰ اردیبهشت ۱۴۰۱، ۰۹:۰۱

سلام خدمت شما

آیا مشکل شما حل شد اگر حل نشده در خدمت هستم.(به ترتیب include فایلها در این مورد هم دقت کنید اکشن user_register برای تست اول در فایل اصلی تون ajax_login.php قرار دهید وتست کنید , همچنین دقت کنید این اکشن برای هر کاربر جدید که ثبت نام می‌شه فراخوانی میشه )

رضا محب ۲۰ اردیبهشت ۱۴۰۱، ۱۵:۴۱

من برای تست در فایل اصلی که گغتید قرار دادم

تابع اون رو بعد از تابعی که برای ثبت نام هست ،قرار دادم اما ارور status 500 میدهد

d7bd-image_2022-05-11_114402926.png


b3ad-image.png




میتونم در همین فایل شرطی را در تابع ثبت نام قرار بدهم و به این صورت باشد : ( اونجایی که کامنت گذاشتم برای شرط رو ببینید)

/*********** validation function for register ****************/
function wp_auth_do_register ()
{
   $user_first_name  = sanitize_text_field($_POST['first_name_reg']);
   $user_last_name   = sanitize_text_field($_POST['last_name_reg']);
   $user_email       = sanitize_text_field($_POST['user_email_reg']);
   $user_password    = sanitize_text_field($_POST['user_password_reg']);
   $validateResult   = validate_register_request($user_first_name, $user_last_name, $user_email, $user_password);
   if (!$validateResult['is_valid'])
   {
      wp_send_json(
         [
         'success' => false,
         'message' => $validateResult['message'],
         ],422);
   }
   $userEmailPart = explode('@', $user_email);
   $new_user = wp_insert_user([
      'user_login'   => $userEmailPart[0], rand(1000, 9999),
      'user_pass'    => $user_password,
      'user_email'   => $user_email,
      'first_name'   => $user_first_name,
      'last_name'    => $user_last_name,
      'display_name' => "$user_first_name $user_last_name",
   ]);
/*   condiction for auto login after register      */
if (isset($new_user['user_login']))
{
   /* use wp_signon([])*/
}
محمد ۲۱ اردیبهشت ۱۴۰۱، ۰۷:۱۶
محمد ۲۱ اردیبهشت ۱۴۰۱، ۰۷:۱۸

سلام خدمت شما

شما این کد تصحیح کنید

'user_login'   => $userEmailPart[0]. rand(1000, 9999)
رضا محب ۲۱ اردیبهشت ۱۴۰۱، ۰۹:۵۳

این کد که عدد رندوم به انتهای نام کاربری اضافه میکند رو درست کردم اما ارور status 500 همچنان می‌آید

داده‌ها هم ذخیره میشوند تو دیتابیس و کاربران وردپرس هستن

ورود خودکار کار نمیکند

کدهای کل پروژه رو گذاشتم لینکش رو ، اونا رو ببینید و تست کنید ببینید شاید من یه جایی رو اشتباه کردم

محمد ۲۱ اردیبهشت ۱۴۰۱، ۱۲:۱۶
add_action( 'user_register','function_name' );

این را هم تصحیح کنید به همین صورت قرار دهید


رضا محب ۲۱ اردیبهشت ۱۴۰۱، ۱۲:۳۷

اگر در ست نشد می‌توانید UltraViewer نصب کنید من از راه دور کد شما را بررسی کنم چون الان برای من کار می‌کنه


بهترین پاسخ
رضا محب ۲۱ اردیبهشت ۱۴۰۱، ۱۲:۵۰