Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wordpress - wlasne "logowanie"
nospor
post 5.03.2025, 09:47:40
Post #1





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
Dołączył: 27.12.2004




Musze pod wordpress podpiac wlasne "logowanie". NIe chodzi mi o wlasna strone logowania, tylko by system pobieral mi sam z innego api dane uzytkownika. Powiedzmy ze token bede mial juz w WP, na pdostawie tokena musze tylko pobrac info usera i by WP traktowal go jako zalogowanego i np. wyswietlal to durne "Howdy XYZ"

To jest kod jaki mam dotychcas

  1. function custom_fake_login() {
  2. if (is_user_logged_in()) {
  3. return; // Already logged in
  4. }
  5.  
  6. // Fake user ID (must be unique and not conflict with real WP users)
  7. $fake_user_id = 99999;
  8.  
  9. // Create a fake user object
  10. $user = new WP_User();
  11. $user->ID = $fake_user_id;
  12. $user->user_login = 'custom_user';
  13. $user->user_email = 'fake@example.com';
  14. $user->roles = ['administrator']; // Adjust role if needed
  15.  
  16. // Set the user as logged in
  17. wp_set_current_user($fake_user_id, 'custom_user');
  18. wp_set_auth_cookie($fake_user_id);
  19.  
  20. // Trigger WordPress login hooks
  21. do_action('wp_login', 'custom_user', $user);
  22. }
  23.  
  24. // Run this when the site loads
  25. add_action('init', 'custom_fake_login');
  26.  
  27. add_filter('wp_get_current_user', function ($user) {
  28. if ($user->exists()) {
  29. print_r($user);
  30.  
  31. return $user; // If WP already recognizes a user, return it
  32. }
  33.  
  34. // Check the current user ID
  35. $user_id = get_current_user_id();
  36. if ($user_id !== 99999) {
  37. return $user;
  38. }
  39.  
  40. // Create a fake user dynamically
  41. $fake_user = new WP_User();
  42. $fake_user->ID = 99999;
  43. $fake_user->user_login = 'custom_user';
  44. $fake_user->display_name = 'Custom User';
  45. $fake_user->roles = ['administrator'];
  46. print_r($fake_user);
  47.  
  48. return $fake_user;
  49. });

Niestety to
add_filter('wp_get_current_user', function ($user) {
jakby w ogole sie nie odpalalo, w sensie ten filtr i oczywiscie zadne "Howdy" sie nie pojawia


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Salvation
post 5.03.2025, 14:00:42
Post #2





Grupa: Zarejestrowani
Postów: 395
Pomógł: 71
Dołączył: 15.07.2014

Ostrzeżenie: (0%)
-----


Możesz sprawdzić najpierw (przez kod) czy taki filtr w ogóle istnieje, bo patrząc po dokumentacji - o ile jest najaktualniejsza jaka może być - to nie widzę go na liście.
Jest co prawda funkcja `wp_get_current_user()`, ale czy ona się odpali dla "filtra", to nie wiem.

Ten post edytował Salvation 5.03.2025, 14:29:05
Go to the top of the page
+Quote Post
nospor
post 5.03.2025, 16:51:37
Post #3





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
Dołączył: 27.12.2004




Tu jest rozwiazanie ktore "dziala"

  1. function force_custom_user_login() {
  2. // Define fake user data
  3. $fake_user_id = 2931;
  4. $fake_user_login = 'custom_user';
  5. $fake_user_email = 'fake@example.com';
  6. $fake_user_display_name = 'Custom User';
  7.  
  8. // Check if the user is already logged in
  9. if (is_user_logged_in()) {
  10. return;
  11. }
  12.  
  13. // Check if the user exists by ID
  14. $user = get_user_by('id', $fake_user_id);
  15.  
  16. if (!$user) {
  17. // If the user doesn't exist, create a new user
  18. $user_id = wp_create_user($fake_user_login, 'fakepassword', $fake_user_email);
  19.  
  20. // Update user data
  21. wp_update_user([
  22. 'ID' => $user_id,
  23. 'display_name' => $fake_user_display_name,
  24. ]);
  25.  
  26. // Get the newly created user
  27. $user = get_user_by('id', $user_id);
  28. }
  29.  
  30. // Log the user in
  31. wp_set_current_user($user->ID);
  32. wp_set_auth_cookie($user->ID);
  33. do_action('wp_login', $user->user_login, $user);
  34. }
  35.  
  36. add_action('init', 'force_custom_user_login');
  37.  

Niestety tworzy usera gdy ten nie istnieje. porazka... Ale nijak nie moge tego obejsc. Jakby ktos cos to chetnie wyslucham


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
3 Użytkowników czyta ten temat (3 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2025 - 03:33