Automatikus bejelentkezés regisztráció után

Sziasztok!

Az egyik ügyfelem weboldalához készítettem egy egyedi regisztrációs formot, ami egy shortcode-val bármelyik oldalba beilleszthető. A regisztrációs form rendben működik, viszont felmerült egy olyan igény, hogy a regisztráció után automatikusan jelentkezzen is be a rendszer.

Több napi keresés után sem találtam megoldást a fenti kérésre. Ebben szeretném kérni a segítségeteket.

Beillesztem a kódot:

 <?php

/*
  Plugin Name: Custom Registration
*/

/////////////////
// PLUGIN CORE //
/////////////////

function cr(&$fields, &$errors) {
  
  // Check args and replace if necessary
  if (!is_array($fields))     $fields = array();
  if (!is_wp_error($errors))  $errors = new WP_Error;
  
  // Check for form submit
  if (isset($_POST['submit'])) {
    
    // Get fields from submitted form
    $fields = cr_get_fields();
    
    // Validate fields and produce errors
    if (cr_validate($fields, $errors)) {
      
      // If successful, register user
      wp_insert_user($fields);
      
      // And display a message
      echo 'Registration complete. Goto <a href="' . get_site_url() . '/wp-login.php">login page</a>.';
      
			  
      // Clear field data
      $fields = array(); 
    }
  }
  
  // Santitize fields
  cr_sanitize($fields);

  // Generate form
  cr_display_form($fields, $errors);
}

function cr_sanitize(&$fields) {
  $fields['user_login']   =  isset($fields['user_login'])  ? sanitize_user($fields['user_login']) : '';
  $fields['user_pass']    =  isset($fields['user_pass'])   ? esc_attr($fields['user_pass']) : '';
  $fields['user_email']   =  isset($fields['user_email'])  ? sanitize_email($fields['user_email']) : '';
  $fields['first_name']   =  isset($fields['first_name'])  ? sanitize_text_field($fields['first_name']) : '';
  $fields['last_name']    =  isset($fields['last_name'])   ? sanitize_text_field($fields['last_name']) : '';
}

function cr_display_form($fields = array(), $errors = null) {
  
  // Check for wp error obj and see if it has any errors  
  if (is_wp_error($errors) && count($errors->get_error_messages()) > 0) {
    
    // Display errors
    ?><ul><?php
    foreach ($errors->get_error_messages() as $key => $val) {
      ?><li>
        <?php echo $val; ?>
      </li><?php
    }
    ?></ul><?php
  }
  
  // Disaply form
  
  ?><form action="<?php $_SERVER['REQUEST_URI'] ?>" method="post">
    <div>
      <label for="website">Vezetéknév</label>
      <input type="text" name="last_name" value="<?php echo (isset($fields['last_name']) ? $fields['last_name'] : '') ?>">
    </div>

    <div>
      <label for="firstname">Keresztnév</label>
      <input type="text" name="first_name" value="<?php echo (isset($fields['first_name']) ? $fields['first_name'] : '') ?>">
    </div>
	
	<div>
      <label for="user_login">Felhasználónév <strong>*</strong></label>
      <input type="text" name="user_login" value="<?php echo (isset($fields['user_login']) ? $fields['user_login'] : '') ?>">
    </div>
    
    <div>
      <label for="user_pass">Jelszó <strong>*</strong></label>
      <input type="password" name="user_pass">
    </div>
    
    <div>
      <label for="email">Email cím <strong>*</strong></label>
      <input type="text" name="user_email" value="<?php echo (isset($fields['user_email']) ? $fields['user_email'] : '') ?>">
    </div>

    <input type="submit" name="submit" value="Regisztráció">
    </form><?php
}

function cr_get_fields() {
  return array(
    'user_login'   =>  isset($_POST['user_login'])   ?  $_POST['user_login']   :  '',
    'user_pass'    =>  isset($_POST['user_pass'])    ?  $_POST['user_pass']    :  '',
    'user_email'   =>  isset($_POST['user_email'])   ?  $_POST['user_email']   :  '',
    'first_name'   =>  isset($_POST['first_name'])   ?  $_POST['first_name']   :  '',
    'last_name'    =>  isset($_POST['last_name'])    ?  $_POST['last_name']    :  '',
  );
}

function cr_validate(&$fields, &$errors) {
  
  // Make sure there is a proper wp error obj
  // If not, make one
  if (!is_wp_error($errors))  $errors = new WP_Error;
  
  // Validate form data
  
  if (empty($fields['user_login']) || empty($fields['user_pass']) || empty($fields['user_email'])) {
    $errors->add('field', 'A szükséges rublika nincs kitöltve');
  }

  if (strlen($fields['user_login']) < 4) {
    $errors->add('username_length', 'A felhasználónév túl rövid. Legalább 4 karakterre van szükség.');
  }

  if (username_exists($fields['user_login']))
    $errors->add('user_name', 'A felhasználónév már foglalt');

  if (!validate_username($fields['user_login'])) {
    $errors->add('username_invalid', 'A megadott felhasználónév helytelen');
  }

  if (strlen($fields['user_pass']) < 5) {
    $errors->add('user_pass', 'A jelszó túl rövid. Legalább 5 karakterre van szükség.');
  }

  if (!is_email($fields['user_email'])) {
    $errors->add('email_invalid', 'Az email cím helytelen.');
  }

  if (email_exists($fields['user_email'])) {
    $errors->add('email', 'Az email cím már foglalt.');
  }  
    
  // If errors were produced, fail
  if (count($errors->get_error_messages()) > 0) {
    return false;
  }
  
  // Else, success!
  return true;
}

///////////////
// SHORTCODE //
///////////////

// The callback function for the [cr] shortcode
function cr_cb() {
  $fields = array();
  $errors = new WP_Error();
  
  // Buffer output
  ob_start();
  
  // Custom registration, go!
  cr($fields, $errors);
  
  // Return buffer
  return ob_get_clean();
}
add_shortcode('cr', 'cr_cb'); 
?> 

Azt szeretném kérdezni, hogy hogyan és hol kellene kibővítenem a kódot, hogy a regisztrációs után automatikusan beléptesse a felhasználót?

Előre is köszönöm a segítségeteket!

Ezeket próbáltad?
_https://hu.wordpress.org/plugins/auto-login-after-registration/
_https://hu.wordpress.org/plugins/auto-login-new-user-after-registration/
Avagy belenéztél a kódjukba?

Nézted ezt? Lehet, hogy nem is kell feltalálni a melegvizet? :smiley:

Auto login after registration

Köszönöm a segítségeteket!

Igazatok van, ha már van jól működő megoldás, miért ne használjuk.

Az “Auto login after registration” plugin egy kis wp_redirect() módosítással tökéletesen megfelelt a célnak.